在Go中将位输入发送到MySQL存储过程

时间:2019-01-27 09:16:13

标签: mysql go

为了说明我遇到的问题,我已经简化了代码。

我在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”)转义为位(同时将其保留为准备好的语句)?

谢谢

0 个答案:

没有答案