Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在ruby项目中将mysql转换为postgresql的最佳方法是什么_Mysql_Ruby On Rails_Database_Postgresql - Fatal编程技术网

在ruby项目中将mysql转换为postgresql的最佳方法是什么

在ruby项目中将mysql转换为postgresql的最佳方法是什么,mysql,ruby-on-rails,database,postgresql,Mysql,Ruby On Rails,Database,Postgresql,对不起,我是一个新的ruby程序员。我有一个使用MySql数据库结构的项目,我想将MysqlDB更改为PostgreSQL。有可能做到这一点吗?如果有,怎么做 我的意思是,如果我必须更改database.yml并更改此特定文件,当我运行rake db:create和rake db:migrate时,这将毫无问题地工作 我已经改成PostgreSQL了。当我运行rake db:create时,我没有得到任何错误,但是当我运行rake db:migrate时,我得到以下错误: rake db:mig

对不起,我是一个新的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_INCREMENT
在mysql中,我也想在postgresql中执行
AUTO_INCREMENT
。下面是我正在使用的迁移包类:

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
class CreatePackages

我如何使用PostgreSQL做同样的事情呢?

使用
AUTO_INCREMENT
进行迁移似乎有问题,因为只有
mysql
才使用
pg
而不使用
AUTO_INCREMENT
的替代方法是
pg
中的
串行
那么替换
是否可以执行(“将表包自动增量=100000”)
更改为
执行(“选择setval('packages\u id\u seq',100000)”)
在您的迁移文件中应该可以使用。

是的,它可以使用。但也可以将gem文件中的
gem'mysql'
替换为
gem'pg'
。然后
bundle
它。您的测试套件有多好?ActiveRecord并不能真正保护您免受数据库差异的影响,因此您可能遇到的第一个问题是任何特定于mysql的你不小心使用了havior。你说的“你的测试服有多好?”是什么意思?更具体一点,是的,这是我主要关心的问题,但我真的需要更改为postgresqlPleas@NitinSrivastava和其他我无法标记的用户!请参阅我的更新,我对db:migrate有问题。请查看我对该问题的描述