抱歉,我是一名新的 ruby 程序员。我有一个使用MySql数据库结构的项目,我想将MysqlDB更改为PostgreSQL。是否可以做到这一点,如果可以的话如何..?
这是什么,如果我必须更改database.yml并更改此特定文件,当我运行rake db:create
和rake db:migrate
时将毫无问题地工作..
我已经改用 PostgreSQL 了。当我运行 rake db:create
时,我没有收到任何错误,但是当我运行 rake db:migrate
时,我收到以下错误:
rake db:migrate
== 20151021060955 CreatePackages: migrating ===================================
-- create_table(:packages)
-> 0.0079s
-- execute("ALTER TABLE packages AUTO_INCREMENT = 100000")
rake aborted!
StandardError: An error has occurred, this and all later migrations canceled:
"PG::SyntaxError: ERROR: syntax error at or near "AUTO_INCREMENT"
LINE 1: ALTER TABLE packages AUTO_INCREMENT = 100000"
问题是,AUTO_INCRMENT
是在mysql中,我也想在postgresql中执行AUTO_INCRMENT
。这是我正在使用的迁移包类:
class CreatePackages < ActiveRecord::Migration
def change
create_table :packages do |t|
t.string :name
t.decimal :total
t.attachment :avatar
t.timestamps
end
execute("ALTER TABLE packages AUTO_INCREMENT = 100000")
end
end
如何使用 PostgreSQL 做同样的事情?
最佳答案
使用仅由 mysql
使用的 AUTO_INCRMENT
进行迁移,而不使用 pg
替代 AUTO_INCRMENT
来查看迁移问题> 是 pg
中的 SERIAL
,因此您可以将 execute("ALTER TABLE packages AUTO_INCRMENT = 100000")
替换为 execute("SELECT setval ('packages _id_seq', 100000)")
在您的迁移文件中应该可以工作。
关于mysql - 在 ruby 项目中将 mysql 更改为 postgresql 的最佳方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34551474/