最近修改mysql数据库表中的字段长度时报错,执行更改的sql语句:
ALTER TABLE <强> server_list <强> 强>修改列server_lip 强> CHAR (25);
报错信息:
1执行查询,0成功,1错误,0警告
查询:alter table server_list修改列server_lip char (25)
错误代码:1833
不能改变列“server_lip”:使用一个外键约束的server_history_ibfk_1表“OMServer.server_history”
原因:server_list表中的server_lip字段为server_history表的外键,server_history建表语句:
CREATE TABLE <代码> server_history 代码> (
<代码> ID> 代码int (11) NOT NULL AUTO_INCREMENT评论的主键ID”,
<代码> history_id 代码> int (11) NOT NULL评论的事件ID”,
<代码> history_ip 代码> char (15) NOT NULL评论的事件IP地址”,
<代码> history_user 代码> char (15) NOT NULL评论的事件用户名”,
<代码> history_datetime 代码> datetime NOT NULL评论的事件时间”,
<代码> db_datetime 代码>时间戳NOT NULL默认CURRENT_TIMESTAMP评论“入库时间”,
<代码> history_command 代码> char (255) NOT NULL评论的事件命令”,
主键(<代码> ID> 代码),
键<代码> history_ip 代码>(<代码> history_ip> 代码),
<>强约束<代码> server_history_ibfk_1> 代码外键(<代码> history_ip> 代码)引用<代码> server_list 代码>(<代码> server_lip> 代码)强>
)引擎=InnoDB AUTO_INCREMENT=27默认字符集=utf8评论='操作事件表”
解决步骤:
1。锁表
server_history写锁表,server_list写;
2。查看是否被锁
错误代码1833不能改变列在国外使用