mysql - 在 ruby​​ 项目中将 mysql 更改为 postgresql 的最佳方法是什么

标签 mysql ruby-on-rails database postgresql

抱歉,我是一名新的 ruby​​ 程序员。我有一个使用MySql数据库结构的项目,我想将MysqlDB更改为PostgreSQL。是否可以做到这一点,如果可以的话如何..?

这是什么,如果我必须更改database.yml并更改此特定文件,当我运行rake db:createrake 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/

相关文章:

c# - 无法在 Visual Studio 中连接到 MySQL 数据库

ruby-on-rails - 将域重定向到heroku中的名称服务器?

c# - 通过继承设计具有共享功能的静态类

sql - 在 SQL Server 上的多个数据库中搜索列名

mysql无法创建表errno 150

php - Laravel 关系

mysql - 获取 mysql 结果的最佳方法

python - 如何导入另一个表的行数?

html - Bootstrap 媒体查询 Rails 错误

ruby-on-rails - 对 Rails 中的对象集合进行排序?