1

指定された長さのインデックスを持つ MySQL の VARBINARY フィールドが必要だったので、schema.rb から structure.sql に切り替える必要がありました。これは schema.rb では処理されませんが、structure.sql では処理されます。

残念ながら、私たちは今、より大きな問題に直面しています。structure.sql ファイルにはCREATE TABLE、ステートメントがアルファベット順に含まれています。テーブルには外部キー制約があります。structure.sql ファイルには、これらの主要な制約が含まれていますが、ファイルをさらに下るまで作成されないテーブルを参照しています。

例えば

CREATE TABLE attachments (
  id INT NOT NULL auto_increment PRIMARY KEY,
  user_id INT,
  /* ... snip ... */
  CONSTRAINT attachments_user_id_fkey FOREIGN KEY (user_id) REFERENCES users(id) ON UPDATE CASCADE
) ENGINE=InnoDB CHARSET=utf8;

/* ... snip ... */

CREATE TABLE users (
  id INT NOT NULL auto_increment PRIMARY KEY,
  /* ... snip ... */
) ENGINE=InnoDB CHARSET=utf8;

これに対する回避策はありますか? このような一般的な DB スキーマの設計原則は根本的に壊れているように思えますが、これが事実だとは信じられません。Rails 3.2.12 を使用しています。

4

1 に答える 1