为了说明我遇到的问题,我已经简化了代码。
我在MySQL 5.7中有一个带BIT(10)列的表。 我已经编写了执行INSERT的存储过程。
BEGIN
INSERT INTO mytable (mycolumn) VALUES (mybinary);
END
在Go中,我只想调用此存储过程。 例如:
rows, err := db.Query("CALL my_proc(?)", "1110110101");
但是,我从MySQL收到以下错误:
Error 1406: Data too long for column 'mycolumn' at row 1
我想我知道此错误的原因。 MySQL正在接收二进制数字作为字符串。字符串使用更多位进行存储。因此,当将字符串转换为位时,每个字符会得到多个位,因此它太长了。 在MySQL中,我知道您可以转义一个字符串以表明它是二进制的,如下所示:
INSERT INTO mytable (mycolumn) VALUES (b'1110110101');
但是在上面的存储过程中,如何将字符串(作为字符串变量“ mybinary”)转义为位(同时将其保留为准备好的语句)?
谢谢