私たちの Web アプリケーションでは、テーブルの id フィールドに「GUID」ID が保持されています。DB の作成に使用される実際の SQL コードを調査することで、ID が実際には主キーとして遅延されていないことがわかりました。一意性は強制されていないようで、インデックスは作成されません。
これは気分が悪いので、それを修正したいと思います。目的は、ID フィールドを「主キー」として設定することだけです。
これが schema.rb のサンプルです
create_table "projects", :id => false, :force => true do |t|
t.string "id"
t.string "name"
t.string "objective"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
t.string "client_account_id"
t.string "default_project_name"
t.boolean "quota_exceeded", :default => false, :null => false
end
開発では SQLite3 データベースを使用していますが、本番環境では MySQL に依存しています。
このような制約を既存の SQLite3 DB に追加することはできないことはわかっていますが、必要に応じて削除して再作成する準備ができています。可能であれば、MySQL DB をドロップすることは避けたいのですが、本当に必要な場合はバックアップして、新しいスキーマにデータを挿入することができます。
それを行うための最良のアプローチは何ですか?(Rails V3.2.6)