Ruby on rails Rails structure.sql无效(外键引用表尚未创建)

Ruby on rails Rails structure.sql无效(外键引用表尚未创建),ruby-on-rails,ruby,activerecord,Ruby On Rails,Ruby,Activerecord,我们不得不从schema.rb切换到structure.sql,因为MySQL中需要一个VARBINARY字段,该字段上有指定长度的索引,schema.rb不处理该字段,但structure.sql处理该字段 不幸的是,我们现在遇到了一个更大的问题。structure.sql文件包含按字母顺序排列的CREATE TABLE语句。我们的表具有外键约束。structure.sql文件包含这些键约束,但引用的表在文件的下一步才创建 e、 g 有解决办法吗?对于这样一个普通的DB模式设计原则来说,它似乎

我们不得不从schema.rb切换到structure.sql,因为MySQL中需要一个VARBINARY字段,该字段上有指定长度的索引,schema.rb不处理该字段,但structure.sql处理该字段

不幸的是,我们现在遇到了一个更大的问题。structure.sql文件包含按字母顺序排列的
CREATE TABLE
语句。我们的表具有外键约束。structure.sql文件包含这些键约束,但引用的表在文件的下一步才创建

e、 g


有解决办法吗?对于这样一个普通的DB模式设计原则来说,它似乎从根本上被打破了,我甚至不能相信这是一件事。我们使用的是Rails 3.2.12。

据我所知,除了重写SQL文件以正确的顺序对create table语句进行排序,或者在最后创建外键约束之外,没有其他修复方法


也可以考虑更改用于创建转储文件的任何工具。转储文件应该能够运行,而这个文件显然不能运行。

这正是Rails在使用
rake db:migrate
时所说的。当您尝试运行单元测试时,它将使用此文件生成测试架构。。。爆炸了。更改工具基本上就是我要问的,因为我们(显然)需要能够运行
rakedb:migrate
,但这样做是错误的。其他人告诉我,这在Rails 4.0中是固定的,所以我们可以升级并继续;)如果在最新版本中仍然存在bug,我建议在Rails中进行归档|
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;