11

次のような古いmysqlテーブルを移行する必要があります。

Products
  name (string, primary_key)

このスキーマに:

Products
  id (integer, primary_key, auto_generated)
  name (unique)

新しいテーブルにProducts.idの値を入力する必要があります。Rails移行ファイルを作成するにはどうすればよいですか?Rails3.2.7を使用しています

現在、2つの問題があります。1。ActiveRecord ::Migrationで主キーを削除する方法が見つかりません。2。新しく追加された主キーの値を生成する方法がわかりません。

4

2 に答える 2

19

移行では任意のSQLを実行できます。

execute "ALTER TABLE `products` DROP PRIMARY KEY"

次に、新しい列を追加します。

add_column :products, :id, :primary_key

見る:

MySQLで主キーを削除する

Railsのテーブルに主キーを追加する方法

http://thinkwhere.wordpress.com/2009/05/09/adding-a-primary-key-id-to-table-in-rails/

http://api.rubyonrails.org/classes/ActiveRecord/Migration.html

于 2013-03-25T19:43:13.057 に答える
14

Postgresqlを使用している場合、構文は少し異なります。

ALTER TABLE <table_name> DROP CONSTRAINT <table_name>_pkey;
于 2016-11-09T08:08:14.970 に答える