我无法理解我的迁移语法有什么问题,请帮忙。 我在MySql2中运行了rake db:migrate,数据库
错误:
Mysql2 ::错误:您的SQL语法中有错误;检查手册 对应于您的MySQL服务器版本,以便在附近使用正确的语法 '在第1行使用CAST(数字AS整数)DEFAULT NULL':ALTER TABLE
seats
CHANGEnumber
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。请帮忙。
答案 0 :(得分:1)
change_column
的最后一个参数:
'integer USING CAST(number AS integer)'
是一种将列从一种类型转换为另一种类型的postgres方法(在本例中为整数)(see more)。
如果要在迁移中使用特定于数据库的代码,则需要同意您使用的DB,并在整个团队中一致地执行此操作。 Postgres特定的代码不能在Mysql上运行,反之亦然。
在整个团队中拥有相同的数据库通常是一个好主意,并且与生产中的数据库相同(保留dev-prod parity)。