标签: migration

耙一次迁移

我试图在我的rails应用程序中运行一大堆迁移.我怎样才能做到这一点?我不希望在它之前或之后运行任何迁移.谢谢.

database migration rake ruby-on-rails

87
推荐指数
6
解决办法
6万
查看次数

将SQLITE SQL转储文件转换为POSTGRESQL

我一直在使用SQLITE数据库进行开发,并在POSTGRESQL中生成.我刚用大量数据更新了我的本地数据库,需要将特定的表传输到生产数据库.

基于运行sqlite database .dump > /the/path/to/sqlite-dumpfile.sql,SQLITE以下列格式输出表转储:

BEGIN TRANSACTION;
CREATE TABLE "courses_school" ("id" integer PRIMARY KEY, "department_count" integer NOT NULL DEFAULT 0, "the_id" integer UNIQUE, "school_name" varchar(150), "slug" varchar(50));
INSERT INTO "courses_school" VALUES(1,168,213,'TEST Name A',NULL);
INSERT INTO "courses_school" VALUES(2,0,656,'TEST Name B',NULL);
....
COMMIT;
Run Code Online (Sandbox Code Playgroud)

如何将上述内容转换为可以导入生产服务器的POSTGRESQL兼容转储文件?

database migration sqlite postgresql

86
推荐指数
6
解决办法
7万
查看次数

使用Rails,如何将主键设置为不是整数类型的列?

我正在使用Rails迁移来管理数据库模式,我正在创建一个简单的表,我希望使用非整数值作为主键(特别是字符串).为了从我的问题中抽象出来,让我们说有一个表格employees,其中员工用字母数字字符串标识,例如"134SNW".

我试过在这样的迁移中创建表:

create_table :employees, {:primary_key => :emp_id} do |t|
    t.string :emp_id
    t.string :first_name
    t.string :last_name
end
Run Code Online (Sandbox Code Playgroud)

这给了我什么似乎完全忽略了这条线t.string :emp_id并继续前进并使它成为一个整数列.有没有其他方法让rails为我生成PRIMARY_KEY约束(我正在使用PostgreSQL),而不必在execute调用中编写SQL ?

注意:我知道最好不要使用字符串列作为主键,所以请不要回答只是说添加一个整数主键.无论如何我可以添加一个,但这个问题仍然有效.

database migration ruby-on-rails primary-key

85
推荐指数
7
解决办法
8万
查看次数

迁移Java

我在rails和Java上使用ruby.我在使用rails项目时非常喜欢使用迁移.所以我想知道是否有像Java工具这样的迁移?如果没有这样的工具,最好使用迁移作为控制Java项目使用的数据库的工具吗?

java migration ruby-on-rails

84
推荐指数
6
解决办法
2万
查看次数

Rails迁移:self.up和self.down与change

看起来新的rails版本与self.up和self.down方法有"变化".

那么,当必须回滚迁移时会发生什么,它如何知道要执行的操作.我需要基于在线教程实现以下方法:

class AddImageToUsers < ActiveRecord::Migration
  def self.up
    add_column :users, :image_file_name, :string
    add_column :users, :image_content_type, :string
    add_column :users, :image_file_size, :integer
    add_column :users, :image_updated_at, :datetime
  end

  def self.down
    remove_column :users, :image_file_name, :string
    remove_column :users, :image_content_type, :string
    remove_column :users, :image_file_size, :integer
    remove_column :users, :image_updated_at, :datetime
  end    
end
Run Code Online (Sandbox Code Playgroud)

如何使用新的更改方法执行相同的操作?

migration ruby-on-rails

83
推荐指数
2
解决办法
4万
查看次数

如何禁用代码首次迁移

我在EF5中有一个代码优先的实体模型.但我想手动管理数据库更改 - 我不希望EF修改我现有的数据库及其所有数据.但是当我在EF映射和数据库中进行并行更改时,EF拒绝正常运行,告诉我需要先使用代码迁移.我怎么关掉这个?

migration entity-framework code-first

80
推荐指数
4
解决办法
8万
查看次数

迁移到 PHP 8.1 - 如何修复已弃用的将 null 传递给参数错误 - 重命名函数中的构建

PHP 8.1 已弃用将null参数传递给许多核心函数。我的主要问题是像htmlspecialchars(php)and 这样的函数trim(php),它null不再默默地转换为空字符串。

为了在不使用大量代码的情况下解决这个问题,我试图重命名原始的内置函数,并将它们替换为将输入转换为null(空)字符串的包装器。

我使用这种方法的主要问题是,该功能rename_function(PECL apd)不再起作用,最后一次更新是从 2004 1开始。

我需要对内置函数进行某种重写,以避免每次调用函数时都编写空检查,从而使我的所有代码变大两倍。

我能想到的唯一其他解决方案是仅使用我的自定义函数,但这仍然需要遍历我拥有的所有代码和第三方库。

在 PHP 8.1 中,当将 null 传递给内置函数时,它不再默默地转换为空字符串。


  1. https://pecl.php.net/package/apd

migration null deprecated php-8.1

80
推荐指数
4
解决办法
16万
查看次数

用黄金取代ld - 有经验吗?

有人试过用gold而不是ld吗?

gold 承诺要快得多ld,所以它可能有助于加快大型C++应用程序的测试周期,但是它可以用作ld的替代品吗?

可以gcc/ g++直接打电话gold.?

有没有知道错误或问题?

虽然gold有一段时间是GNU binutils的一部分,但我发现Web上几乎没有"成功案例"甚至"Howtos".

(更新:添加了黄金和博客条目的链接解释它)

c c++ migration linker gold-linker

79
推荐指数
6
解决办法
4万
查看次数

为什么我的南迁不起作用?

首先,我创建了我的数据库.

create database mydb;
Run Code Online (Sandbox Code Playgroud)

我在安装的应用程序中添加"南".然后,我转到本教程:http: //south.aeracode.org/docs/tutorial/part1.html

教程告诉我这样做:

$ py manage.py  schemamigration wall --initial
>>> Created 0001_initial.py. You can now apply this migration with: ./manage.py migrate wall
Run Code Online (Sandbox Code Playgroud)

好的,现在我迁移了.

$ py manage.py migrate wall
Run Code Online (Sandbox Code Playgroud)

但它给了我这个错误......

django.db.utils.DatabaseError: (1146, "Table 'fable.south_migrationhistory' doesn't exist")
Run Code Online (Sandbox Code Playgroud)

所以我使用谷歌(这永远不会奏效,因此问#2我的870度的问题.),我得到这个页面:http://groups.google.com/group/south-users/browse_thread/thread/d4c83f821dd2ca1c

好的,所以我按照说明进行操作

>> Drop database mydb;
>> Create database mydb;
$ rm -rf ./wall/migrations
$ py manage.py syncdb
Run Code Online (Sandbox Code Playgroud)

但是当我运行syncdb时,Django会创建一堆表.是的,它创建了south_migrationhistory表,但它也创建了我的应用程序表.

Synced:
 > django.contrib.admin
 > django.contrib.auth
 > django.contrib.contenttypes
 > django.contrib.sessions
 > django.contrib.sites
 > django.contrib.messages
 > south
 > fable.notification
 > …
Run Code Online (Sandbox Code Playgroud)

python migration django django-south

79
推荐指数
3
解决办法
5万
查看次数

Rails迁移:检查存在并继续进行?

我在迁移中做了这样的事情:

add_column :statuses, :hold_reason, :string rescue puts "column already added"
Run Code Online (Sandbox Code Playgroud)

但事实证明,虽然这适用于SQLite,但它不适用于PostgreSQL.看起来如果add_column爆炸,即使捕获了Exception,事务也已经死了,因此Migration不能做任何额外的工作.

是否有任何非DB特定方法来检查列或表是否已存在?如果做不到的话,有没有办法让我的救援块真正起作用?

migration ruby-on-rails

72
推荐指数
3
解决办法
3万
查看次数