我正在使用MySQL数据库。
我有一个表的数据类型为binary(16)的列。
我需要有关此表的insert语句的帮助。
Example:
CREATE TABLE `assignedresource` (
`distid` binary(16) NOT NULL
)
insert into assignedresource values ('9fad5e9e-efdf-b449');
Error : Lookup Error - MySQL Database Error: Data too long for column 'distid' at row 1
如何解决此问题?
答案 0 :(得分:12)
您应该删除连字符以使值与字段的长度相匹配...
Example:
CREATE TABLE `assignedresource` (
`distid` binary(16) NOT NULL
)
insert into assignedresource values ('9fad5e9eefdfb449');
此外,MySQL标准是使用这种表示法将字符串表示为二进制... X'9fad5e9eefdfb449',即
insert into assignedresource values (X'9fad5e9eefdfb449');
答案 1 :(得分:0)
好吧,假设您要严格插入十六进制字符串,首先需要删除短划线然后“unhex”将字符串插入二进制文件(16)数据类型列,代码如下:
INSERT INTO `assignedresource` VALUES(UNHEX(REPLACE('9fad5e9e-efdf-b449','-','')));
另外......您插入的“可用”数据实际上是 8个字节 unashing 之后,所以二进制(如果你打算不存储短划线,那么会很好。
答案 2 :(得分:-1)
你的字符串是18个字符长,更改数据库
CREATE TABLE `assignedresource` (
`distid` binary(18) NOT NULL
)