0

我目前有一个现有模型 Document,它需要一个新的自动递增列。不幸的是,我在迁移过程中遇到了错误。

我采取的步骤是:

ruby script/generate migration add_index_column_to_Document

.rb正确生成了标题为空的

20121220182429_add_index_column_to_document.rb

接下来,我将文件编辑为如下所示:

class AddIndexColumnToDocument < ActiveRecord::Migration
  def self.up
    execute 'ALTER TABLE documents ADD index INT NOT NULL AUTO_INCREMENT PRIMARY KEY'
  end

  def self.down
    execute 'ALTER TABLE documents DROP index'
  end
end

然后我执行迁移rake db:migrate并得到以下错误:

==  AddIndexColumnToDocument: migrating =======================================
-- execute("ALTER TABLE documents ADD index INT NOT NULL AUTO_INCREMENT PRIMARY KEY")
rake aborted!
An error has occurred, all later migrations canceled:

Mysql::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'INT NOT NULL AUTO_INCREMENT PRIMARY KEY' at line 1: ALTER TABLE documents ADD index INT NOT NULL AUTO_INCREMENT PRIMARY KEY

MySQL版本,根据apt-cache show mysql-server是:5.5.28-0ubuntu0.12.04.2

对我来说不幸的是,我的 SQL 代码与我可以在网上找到的所有示例相匹配,所以我不确定它为什么不起作用。提前感谢您提供的任何帮助。

4

1 回答 1

4

尝试转义保留的单词“index”。更好的是,让 Rails 为您完成:

class AddIndexColumnToDocument < ActiveRecord::Migration
  def change
    add_column :documents, :index, :primary_key
  end
end
于 2012-12-20T18:58:25.750 回答