MySQLのtinyint(1)型を転送する際、自動的にBOOLEAN型に変換されてしまいます。これを防ぐには、転送設定のクエリで明示的にCASTして、INT型として送信する必要があります。
事象
MySQLでtinyint(1)型に格納されたデータ(0、1、2など)を転送する際、以下のように自動変換されます。
-
0→ FALSE -
1以上 → TRUE
結果として、元データの「2」が「TRUE」として保存され、データが失われてしまいます。
理由
TROCCOの内部で利用しているEmblukの仕様により、tinyint(1)はBOOLEAN型と解釈されます。これはMySQLがBOOLEAN型を内部的にtinyint(1)として扱っているためです。
対処法
転送設定のSTEP1のクエリでCAST関数を使用して、tinyint(1)をINT型に明示的に変換してください。
SELECT CAST(column_name AS SIGNED) AS column_name
FROM table_name
具体例
MySQLテーブルに複数のカラムがある場合、以下のように指定します。
SELECT
id,
CAST(status_flag AS SIGNED) AS status_flag,
name,
created_at
FROM users
このようにすることで、tinyint(1)のデータはINT型のまま転送できます。
コメント
0件のコメント
記事コメントは受け付けていません。