1
我有一個需要與SQL Server表同步的MySQL表。所以來自MySQL的數據轉移到SQL Server。它由簡單的SELECT *和INSERT INTO查詢完成。但是,我遇到了將一些BLOB數據遷移到varbinary字段的問題。使用Zend_Db在varbinary(SQL Server)字段中插入blob(來自mysql)數據
所以我有這樣的代碼:
$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服務器字段定義爲(varbinary(max), null)
。我認爲這只是一個簡單的錯誤,但我無法弄清楚。任何人都可以幫我解決這個問題嗎?
我自己發現了它,但我必須等待7個小時才能回覆它。我希望我仍然記得7個小時後有這個問題。 – henk 2012-03-01 13:32:30