我在Windows 8.1(64位)上的Rails 4下有一个MySql5.6数据库,并且正在运行迁移以重建数据库。这些迁移适用于其他开发人员。这指向我系统上的某些内容,但我不知道是什么。我得到的错误是rename_table抛出MySQL错误。
Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'INDEX `index_bays_on_hub_id` TO `index_w_bays_on_hub_id`' at line 1: ALTER TABLE `w_bays` RENAME INDEX `index_b
ays_on_hub_id` TO `index_w_bays_on_hub_id`C:/Users/Dev/RubymineProjects/ital-freight-manager/db/migrate/20141128123833_rename_bays_to_w_bays.rb:3:in `change'
迁移方法是
def change
rename_table :bays, :w_bays
end
我读到这是说 Rails 已经生成了 ALTER 表......重命名索引..MySQL不理解的命令。数据库配置指定这是一个MySQL数据库(它是一个MySQL数据库),所以我不明白为什么Rails(或者可能是Ruby)会生成无效命令。任何帮助确定问题将不胜感激,因为我是 Rails 的新手。
刚刚意识到这是一个rename_table但我在手动完成的rename_column上看到了同样的情况。然后它击中了这个。
您需要先删除引用到您的托架的索引重命名表创建新索引例:
def change
remove_index :bays, name: "index_bays_on_hub_id"
rename_table :bays, :w_bays
... create index
end