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

予約されている「インデックス」という単語をエスケープしてみてください。さらに良いことに、Railsに任せてください。

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