【发布时间】:2021-01-31 03:05:53
【问题描述】:
我正在尝试通过 DBI 和 Linux 中的 freeTDS 将二进制数据插入 Microsoft SQL-Server 2014 上的 VARBINARY(max) 列。
以下(简化)代码不起作用:
$data = "foobar"; # real binary data gives same error
$dbh = <...valid db-handle ...>;
$sth = $dbh->prepare ("UPDATE table SET data=? WHERE id=?");
$sth->bind_param (1,$data,DBI::SQL_VARBINARY);
$sth->bind_param (2,$some_id);
$sth->execute or die ...
结果:
ct_result(ct_dynamic(CS_PREPARE)) returned -205 at /usr/lib/x86_64-linux-gnu/perl5/5.28/DBD/Sybase.pm line 138.
DBD::Sybase::db prepare failed: Server message number=257 severity=16 state=3 line=1 server=SERVER text=Implicit conversion from data type varchar to varbinary(max) is not allowed. Use the CONVERT function to run this query. Server message number=8180 severity=16 state=1 line=1 server=...
Can't call method "bind_param" on an undefined value
似乎 bind_param 调用尾部正确编码二进制数据。未定义值错误似乎是绑定执行失败的结果。我为 bind_param 尝试了各种其他列类型,例如 SQL_LONGVARBINARY、SQL_BLOB ...但错误保持不变。
【问题讨论】:
标签: sql-server perl blob dbi varbinary