rake db:migrate返回“Mysql2 :: Error:你的SQL语法有错误;查看对应的手册......”

时间:2018-04-19 12:21:30

标签: mysql ruby-on-rails ruby migrate mysql2

我无法理解我的迁移语法有什么问题,请帮忙。 我在MySql2中运行了rake db:migrate,数据库

错误:

  

Mysql2 ::错误:您的SQL语法中有错误;检查手册       对应于您的MySQL服务器版本,以便在附近使用正确的语法       '在第1行使用CAST(数字AS整数)DEFAULT NULL':ALTER TABLE seats CHANGE       number number整数使用CAST(数字AS整数)DEFAULT NULL

下面是语法:

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

我的猜测是因为我的合作伙伴在本地使用PostgreSQL,但无论如何都将代码推送到了Git。请帮忙。

1 个答案:

答案 0 :(得分:1)

change_column的最后一个参数:

'integer USING CAST(number AS integer)'

是一种将列从一种类型转换为另一种类型的postgres方法(在本例中为整数)(see more)。

如果要在迁移中使用特定于数据库的代码,则需要同意您使用的DB,并在整个团队中一致地执行此操作。 Postgres特定的代码不能在Mysql上运行,反之亦然。

在整个团队中拥有相同的数据库通常是一个好主意,并且与生产中的数据库相同(保留dev-prod parity)。