1

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

Rails 尝试的迁移是:

ALTER TABLE xxxxxCHANGEabcd ABCD文本 DEFAULT '' NOT NULL

现在,我没有要求迁移更改列类型,我只是要求它重命名列,那么迁移为什么要对列类型做任何事情呢?

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

任何帮助表示赞赏。

维克拉姆

4

1 回答 1

0

在此问题上似乎确实存在长期未解决的问题,如下所述:

导轨错误报告

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

编辑

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

MyModel.connection.execute "ALTER TABLE xxxxx CHANGE abcd ABCD text DEFAULT NULL"
于 2009-06-09T05:30:44.890 回答