【发布时间】:2014-12-12 11:58:04
【问题描述】:
我在 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 生成了 MySQL 不理解的 ALTER TABLE ... RENAME INDEX .. 命令。数据库配置指定这是一个 MySQL 数据库(它是一个 MySQL 数据库),所以我不明白为什么 Rails(或者它可能是 Ruby)会生成无效命令。由于我是 Rails 新手,因此我将不胜感激在识别问题方面的任何帮助。
*** 刚刚意识到这是一个 rename_table,但我看到与我手动完成的 rename_column 相同。然后它击中了这个。
【问题讨论】:
-
迁移在哪里?
-
我是按照你的要求添加的。
-
尝试在rename_table之前手动删除索引,重命名后添加
-
谢谢。我知道我可以围绕这个进行编程(并且为此编写了一些通用代码),但如果我能提供帮助,我不想编辑迁移来修复系统错误。一些进一步的挖掘表明 gem 将数据库视为 MySQL 5.7 ,它支持 RENAME INDEX。现在只能解决它。
标签: mysql ruby-on-rails rails-migrations