Mysql更新:ERROR 1292(22007):截断不正确的DOUBLE值

时间:2012-10-25 14:06:32

标签: mysql

我的问题如下: 我有一个表foo_table,ID为ID bigint (primary key),名称列NAMEvarchar(80),代码COLUMN代码为varchar(20)。我对CODE列有一个独特的约束。

如果我只用"数字"填写此表格代码列中的字符串,然后有一天决定添加一行,其中包含一个惊讶的"字符串"该代码列中的字符串,比如说'#34;我的代码",它工作正常!当我尝试更新我之前的一个记录时出现错误,一个CODE值为数字的记录;在这种情况下,我得到了一个着名的错误说:

  

ERROR 1292(22007):截断错误的DOUBLE值:'我的代码'。

我甚至没有触及那条记录!我认为MySQL正在尝试检查唯一约束并尝试将CODE列中的每个值转换为double,但这是疯了,而且非常不专业。

任何人都有解决方案吗?就像关闭MySQL中的字符串< - >数字转换一样?

提前致谢。

编辑: 好的我有示例代码,但在创建它时我看到了如何解决问题,就我而言,这仍然是MySQL的一个问题:

CREATE TABLE foo_table (
ID bigint(20) NOT NULL DEFAULT '0', 
NAME varchar(80) DEFAULT NULL,
CODE varchar(20) NOT NULL DEFAULT '', 
UNIQUE KEY foo_table_uk (CODE)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 CHECKSUM=1 DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC;

insert into foo_table (id, name, code) values (1, 'one', '1');
insert into foo_table (id, name, code) values (2, 'two', '2');
insert into foo_table (id, name, code) values (3, 'three', 'three');

update foo_table set name='a-one', code='1' where code=1; <-- This update throws the error

update foo_table set name='a-one', code='1' where code='1'; <-- this update works fine

0 个答案:

没有答案