【发布时间】:2012-03-01 12:45:34
【问题描述】:
我有一个需要与 SQL Server 表同步的 MySQL 表。因此,来自 MySQL 的数据移动到 SQL Server。它是通过简单的 SELECT * 和 INSERT INTO 查询来完成的。但是,我在将一些 BLOB 数据迁移到 varbinary 字段时遇到了问题。
所以我有这个代码:
$db_mysql = new Zend_Db_Adapter_Pdo_Mysql(array(
'host' => '127.0.0.1',
'username' => '<user>',
'password' => '<password>',
'dbname' => '<db>',
'charset' => 'utf8'
));
$db_mssql = new Zend_Db_Adapter_Pdo_Mssql(array(
'pdoType' => 'sqlsrv',
'host' => '<host>',
'username' => '<user>',
'password' => '<password>',
'dbname' => '<db>'
));
$rows = $db_mysql->fetchAll("SELECT Id, Picture FROM Rosters");
foreach ($rows as $row) {
$update_sql = "UPDATE Rosters SET Picture = :picture WHERE Id = :id";
$stmt = new Zend_Db_Statement_Pdo($db_mssql, $update_sql);
$stmt->bindValue(":picture", bin2hex($row['Picture']), Zend_Db::PARAM_LOB);
$stmt->bindValue(":id", $row['Id'], Zend_Db::PARAM_INT);
try {
$stmt->execute();
} catch (Exception $e) {
echo $e->getMessage();
var_dump($e);
die();
}
}
这给了我难以置信的不太有用的错误消息:PDOException: SQLSTATE[HY000]: General error: 257 General SQL Server error: Check messages from the SQL Server [257] (severity 16) [(null)]
MySQL Blob 字段定义为BLOB,属性为BINARY,SQL Server 字段定义为(varbinary(max), null)。我认为这只是一个简单的错误,但我无法弄清楚。谁能帮我解决这个问题?
【问题讨论】:
-
我自己发现的,但是我要等7个小时才能回复。我希望我仍然记得在 7 小时后打开这个问题..
标签: sql-server-2008 pdo blob zend-db varbinary