rake db:migrate возвращает Mysql2::Error: у вас есть ошибка в синтаксисе SQL; проверьте руководство, которое соответствует ..

Я не могу понять, что не так с моим синтаксисом миграции, пожалуйста, помогите. Я запустил rake db:migrate, базу данных в MySql2.

ошибка:

Mysql2::Error: у вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с «USING CAST (число AS integer) DEFAULT NULL» в строке 1: ALTER TABLE seats CHANGE number number integer USING CAST (число AS integer) DEFAULT NULL

под ним синтаксис:

class ChangeNumberTypeInSeats < ActiveRecord::Migration
  def change
    change_column :seats, :number, 'integer USING CAST(number AS integer)'
  end
end

Я предполагаю, что это потому, что мой партнер использует PostgreSQL локально, но все равно отправил код в Git. Пожалуйста помоги.


person Monica Agustin    schedule 19.04.2018    source источник
comment
@Monica_Agustin Можете ли вы добавить свой database.yml к вопросу?   -  person cnnr    schedule 19.04.2018


Ответы (1)


Последний аргумент change_column:

'integer USING CAST(number AS integer)'

это способ postgres преобразовать столбец из одного типа в другой (в данном случае в целое число) (см. подробнее).

Если вы хотите использовать код, специфичный для базы данных, в миграции, вам необходимо согласовать используемую базу данных и сделать это последовательно для всей команды. Код, специфичный для Postgres, не будет работать на Mysql и наоборот.

Как правило, рекомендуется иметь одну и ту же базу данных для всей команды и ту же, что и для рабочей среды (чтобы сохранить паритет разработки и производства).

person mrzasa    schedule 19.04.2018