文档解释
Error number: MY-012143; Symbol: ER_IB_MSG_318; SQLSTATE: HY000
Message: %s
错误说明
mysql 错误代码 MY-012143(ER_IB_MSG_318)指示引发的错误:在修改列定义时被禁止操作。当更改表中已有列的定义时,MySQL 经常会引发这个错误,提示无法执行操作。
ER_IB_MSG_318 错误码是 InnoDB 模块发出的错误,只有当使用 InnoDB 时才会出现 ER_IB_MSG_318 错误。
常见案例
常见案例
ALTER TABLE mytable_innodb MODIFY COLUMN mycolumn VARCHAR(255);
MySQL 将返回下面的错误信息:
Error Code: 1273. Field of table ‘mytable_innodb’ doesn’t have a default value [ER_IB_MSG_318]
解决 ER_IB_MSG_318 错误的方法有多种,取决于出现错误时的实际情况。所以,在尝试解决这个错误之前,应首先分析其出现的原因和对应的附加信息,以便于采用最适合的解决方法。一般来说,修复 MySQL 是最简单的方法,可以尝试重启 MySQL 实例:
重启 MySQL 服务:
sudo service mysql restart
或者在终端中输入:
/etc/init.d/mysql restart
另一个有效的解决方法是在更改列定义时指定字段的默认值:
ALTER TABLE mytable_innodb MODIFY COLUMN mycolumn VARCHAR(255) DEFAULT ”;
另外还可以尝试使用 ALTER TABLE 命令的 NOCHECK CONSTRAINT 子句来暂时禁用约束,然后再更新字段定义。一旦完成,就可以使用 CHECK CONSTRAINT 子句来重新检查约束。
例如:
ALTER TABLE mytable_innodb NOCHECK CONSTRAINT ALL;
ALTER TABLE mytable_innodb MODIFY COLUMN mycolumn VARCHAR(255);
ALTER TABLE mytable_innodb CHECK CONSTRAINT ALL;

有时候,可能需要在列定义中显式指定类型注释:
ALTER TABLE mytable_innodb MODIFY COLUMN mycolumn VARCHAR(255) COMMENT “type varchar(255)”;
另外,也可以考虑使用 DROP COLUMN 和 ADD COLUMN SQL 语句来更改列定义,这样也可以防止出现 ER_IB_MSG_318 错误:
ALTER TABLE mytable_innodb DROP COLUMN mycolumn;
ALTER TABLE mytable_innodb ADD COLUMN mycolumn VARCHAR(255);
香港美国云 服务器 首选树叶云,2H2G首月10元开通。树叶云(www.IDC.Net)提供简单好用,价格厚道的香港/美国云服务器和独立服务器。IDC+ISP+ICP资质。ARIN和APNIC会员。成熟技术团队15年行业经验。
C#中的DataGrid怎样执行查询\添加\修改,并保存到数据库?
你点击GRIDVIEW右上角的那个小三角,然后点编辑列,在弹出的窗口中添加一个叫做COMMANDFILE的列,下这个列下面有一个叫做“编辑、更新、去消”它是有来修改一列内容的。 还有一个叫做“删除”的,这个不用我说是做什么的了吧。 要想添加一列有点儿麻烦,这个要你自己写,不过你可新添加一个列,放上个BUTTON,然后让它打开一个DetailsView进行数据添加。 也是一个不错的选择啊。 补存:你可把DetailsView放到一个新的页面中,那在添加数据的按钮就写连接这个页面的代码就行了,如果你想在一个页面内显示的话,你可以写上DetailsView显示的代码,=true;当然这个控件在你打开网页是隐藏的。
oracle10G里怎么样重命名表名,列名
ALTERTABLE表名renamecolumn列名to新列名/*重命名列名*/ALTERTABLE表名renameto新表名/*重命名表名*/
发表评论