我们不得不从 schema.rb 切换到 structure.sql,因为我们需要 MySQL 中的 VARBINARY 字段,上面有一个指定长度的索引,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;
有解决方法吗?对于这样一个常见的数据库模式设计原则,它似乎从根本上被打破了,我什至无法相信这是一件事。我们在 Rails 3.2.12 上。