更改主键问题Rails 4.0

我按照本指南介绍了如何更改主键:

http://www.lshift.net/blog/2013/09/30/changing-the-primary-key-type-in​​-ruby-on-rails-models/comment-page-1

这是我的代码:

class Pk2 < ActiveRecord::Migration def up remove_column :contracts, :id # remove existing primary key rename_column :contracts, :contractId, :id # rename existing UDID column execute "ALTER TABLE contracts ADD PRIMARY KEY (id);" end def down # Remove the UDID primary key. Note this would differ based on your database execute "ALTER TABLE contracts DROP CONSTRAINT table_pkey;" rename_column :contracts, :id, :contractId add_column :contracts, :id, :primary_key end end 

我一直得到的错误是“ALTER TABLE表ADD PRIMARY KEY周围的语法”

请帮忙。 谢谢。

答案似乎是OP将迁移分为3个文件:

 1. Remove `:id` column 2. Rename `:contractId` column to `:id` 3. run `execute "ALTER TABLE contracts ADD PRIMARY KEY (id);"` 

这允许OP成功运行迁移

其他一些资源:

  • 使用Rails,如何将主键设置为不是整数类型的列?
  • 在Rails 4迁移中设置自定义主键时出现问题