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フィールドは、属性BINARY
とBLOB
、SQLのように定義されますサーバーフィールドは(varbinary(max), null)
と定義されています。私はそれが単なる単純な間違いだと思うが、私はそれを理解できない。誰もがこれで私を助けることができますか?
は、私は自分でそれを見つけたが、私はそれに答えることができる前に7時間を待たなければなりません。私はまだ7時間後にこの質問を開いていることを覚えています。 – henk