Rails rename_column迁移问题

时间:2009-06-09 04:42:43

标签: ruby-on-rails text migration blob rename

我正在尝试在现有数据库上运行迁移以更改表上的列名。当我运行迁移时,我收到一条错误,指出Blob / Text字段不能具有默认值。有问题的列是文本列,具有非null属性,但没有默认值。

Rails尝试的迁移是:

ALTER TABLE xxxxx更改abcd ABCD文字DEFAULT''NOT NULL

现在,我没有要求迁移更改列类型,我只是要求它重命名列,那么为什么迁移会尝试对列类型执行任何操作?

我已经用Google搜索了这个问题,并没有提出解释或解决方法。

任何帮助表示感谢。

维克拉姆

1 个答案:

答案 0 :(得分:0)

在这个问题上似乎有一个长期未解决的故障单,如下所述:

rails bug report

Rails的默认行为是创建NULL的列,因为这可以防止在将空字符串转换回Ruby时对存在性检查等的误报。您是否可以通过重新定义文本列以在mySQL控制台中使用NULL值来解决此问题?

修改

您可以在迁移文件中执行此操作,这不是Rails方式,但它比向每个人发送电子邮件以更改其本地副本要好得多:

MyModel.connection.execute "ALTER TABLE xxxxx CHANGE abcd ABCD text DEFAULT NULL"