2014-12-12 2 views
1

У меня есть база данных MySql5.6 под Rails 4 в Windows 8.1 (64-разрядная версия) и выполняется миграция для восстановления базы данных. Эти миграции работают для других разработчиков. Это указывает на что-то в моей системе, но я не знаю, что. Ошибка, которую я получаю, заключается в том, что rename_table бросает ошибку MySQL.Rails 4 rename_column получает ошибку синтаксиса 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 сгенерировал TABLE ALTER ... RENAME INDEX .. команда, которая MySQL не понимает. Конфигурация базы данных указывает, что это база данных MySQL (и это база данных MySQL), поэтому я не понимаю, почему Rails (или, может быть, Ruby) генерирует недопустимые команды. Любая помощь в выявлении проблемы была бы оценена, поскольку я новичок в Rails.

*** Просто понял, что это переименование_таблицы, но я видел то же самое с rename_column, который я сделал вручную. Затем он ударяет по этому.

+0

где находится миграция? –

+0

Я добавлял его, как вы просили. – NigelWhitley

+0

попытайтесь удалить индексы вручную перед переименованием и добавить его после переименования –

ответ

0

Вам нужно, прежде чем удалить индексы, которые ссылаются на ваши бухт Rename таблица Создать новый индекс Пример:

def change 
    remove_index :bays, name: "index_bays_on_hub_id" 
    rename_table :bays, :w_bays 
    ... create index 
end 
Смежные вопросы