検索しましたが、探しているものがまったく見つからないようです。Oracle で PL/SQL スクリプトを実行しており、MySQL ODBC 5.2 Unicode Driver を使用してデータベース リンク経由で MySQL のテーブルにレコードを挿入しようとしています。
リンクは正常に機能し、それを使用してOracleで複雑なクエリを実行し、そこでレコードに対してさまざまな挿入と更新を行うことができます.
失敗するのは、bit(1) 型のカラムを持つ MySQL テーブルにレコードを挿入しようとした場合です。
これは基本的にカーソル for ループであり、insert ステートメントは次のようになります。
INSERT INTO "app_user"@mobileapi (USERNAME, VERSION, ACCOUNT_EXPIRED, ACCOUNT_LOCKED, PASSWD, PASSWORD_EXPIRED)
VALUES (CU_rec.USERNAME, CU_rec.VERSION, CU_rec.ACCOUNT_EXPIRED, CU_rec.ACCOUNT_LOCKED, CU_rec.PASSWD, CU_rec.PASSWORD_EXPIRED)
、 などのターゲット列の一部は、MySQL のACCOUNT_EXPIRED
列です。カーソル内のデータ型をOracle で必要なほぼすべてのデータ型に変換できるとすれば、それらをターゲットに挿入するにはどうすればよいでしょうか? 考えられることはすべて試しましたが、次のようになりました。ACCOUNT_LOCKED
bit(1)
CU_rec
エラーレポート:
ORA-28500: connection from ORACLE to a non-Oracle system returned this message:
[MySQL][ODBC 5.2(w) Driver][mysqld-5.6.10]Data too long for column 'ACCOUNT_EXPIRED' at row 1 {HY000,NativeErr = 1406}
ORA-02063: preceding 2 lines from MOBILEAPI
ORA-06512: at line 44
28500. 00000 - "connection from ORACLE to a non-Oracle system returned this message:"
*Cause: The cause is explained in the forwarded message.
*Action: See the non-Oracle system's documentation of the forwarded
message.
どんな助けでも大歓迎です。