【发布时间】:2014-09-01 04:49:33
【问题描述】:
我已经升级了一个magento软件,但是遇到了sql错误:
ALTER TABLE `poll` MODIFY COLUMN `store_id` smallint UNSIGNED NOT NULL default '0' COMMENT 'Store id'
这是:
SQLSTATE[HY000]: General error: 1025 Error on rename of './seedpant_dev/#sql-266d_25a3' to './seedpant_dev/poll' (errno: 150)
我实际上已经拥有了 100 个这样的索引,并且一直在处理和解析索引,但是这个是为了修改表,但是在 phpmyadmin 中,我无法弄清楚 sql 上面的内容是什么,并在 phpmyadmin 中复制手动编辑 - 截图如下:
谁能解释一下?真的卡住了,可能还有 100 多个我需要做的事情
提前致谢
詹姆斯
【问题讨论】:
-
stackoverflow.com/questions/16227199/mysql-errno-150 似乎暗示您不能在
ALTER语句上使用default作为外键。但是,这仅处理ON DELETE子句,默认为操作,因此它可能完全不相关。该错误肯定与约束有关。你能检查一下列上有什么约束吗? -
store_id在其他表中是否被引用为外来语? -
当我用谷歌搜索那个错误号时,我得到了几页的 StackOverflow 结果,就像这样:stackoverflow.com/questions/5948704/…
-
我猜您需要在更改列之前将外键放在 store_id 上。然后重新附加它。默认 0 对于 id 引用非常奇怪,默认 NULL 或完全摆脱默认值要好得多。如果该列有任何现有的 NULL 值,它可能会尝试将它们转换为 0,这可能会破坏外键。
-
尝试了所有这些,似乎没有任何效果
标签: mysql sql phpmyadmin