Rails Rename_column迁移问题
-
13-09-2019 - |
题
我正在尝试在现有数据库上运行迁移,以更改表上的列名。当我运行迁移时,我会遇到一个错误,说明BLOB/文本字段不能具有默认值。所讨论的列是一个文本列,具有非NULL属性,但没有默认值。
铁轨尝试的迁移是:
Alter表 xxxxx
改变 abcd
ABCD
文本默认''不是null
现在,我没有要求迁移更改列类型,我只要求它重命名列,那么为什么迁移试图对列类型做任何事情?
我已经搜索了这个问题,但没有提出解释或解决方法。
任何帮助都赞赏。
维克拉姆
解决方案
如下所述,似乎确实有一张长期未解决的票证:
Rails的默认行为是制造无效的列,因为在将空白字符串转换回Ruby时,这会防止在存在检查等上进行误报。您可以通过重新定义文本列以在MySQL控制台中使用零值来解决这个问题吗?
编辑
您可以在迁移文件中执行此操作,这不是导轨的方式,但要比向所有人发送电子邮件更改其本地副本要好得多:
MyModel.connection.execute "ALTER TABLE xxxxx CHANGE abcd ABCD text DEFAULT NULL"
不隶属于 StackOverflow