Rails 4 rename_column获取MySQL语法错误

时间:2014-12-12 11:58:05

标签: mysql ruby-on-rails rails-migrations

我在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 TABLE ... RENAME INDEX ..命令,MySQL不理解。数据库配置指定这是一个MySQL数据库(它是一个MySQL数据库),所以我不知道为什么Rails(或者它的Ruby)生成无效命令。任何帮助识别问题的人都会受到赞赏,因为我是Rails的新手。

***刚刚意识到这是一个rename_table,但我看到的是一个rename_column,我已经手动完成了。然后它击中了这个。

1 个答案:

答案 0 :(得分:0)

您需要先删除引用托架的索引 重命名表 创建新索引 例如:

def change
  remove_index :bays, name: "index_bays_on_hub_id"
  rename_table :bays, :w_bays
   ... create index
end