我正在尝试使用MySQL Workbench工具将PostgreSQL数据库转换为MySQL。似乎架构迁移工作正常 - 没有错误,但是当我尝试迁移数据时 - 我得到了大量的错误列表,看起来它们都是关于同样的事情 - Postgres boolean
字段被提取为在MySQL中无法保存为TINYINT
的极大整数:
ERROR: `mydb`.`my_table`:Range error fetching field 9 (value 140406775873536, target is MYSQL_TYPE_TINY)
有没有办法解决这个问题?
答案 0 :(得分:1)
如果你们中的一个必须大规模地做,我建议您看一下这个答案以便生成一个批量脚本:
bulk changing column types in MySQL
或仅检查以下脚本:
SELECT
CONCAT('ALTER TABLE ',
TABLE_NAME,
' CHANGE COLUMN ',
COLUMN_NAME,
' ',
column_name,
' TARGET_TYPE ',
CASE
WHEN IS_NULLABLE = 'NO' THEN ' NOT '
ELSE ''
END,
' NULL;') AS que
FROM
information_schema.columns
WHERE
table_schema = 'MY DB'
AND data_type = 'SOURCE_TYPE';
答案 1 :(得分:0)
好的,我现在有一个解决方案。
<强>原因:强>
默认情况下,当使用MySQL Workbench中的向导将数据从Postgres迁移到MySQL时,如果Postgres字段是布尔值,它将在MySQL中创建TINYINT(1)列,这就是我们遇到此错误的原因。
<强>解决方案:强>
ALTER TABLE
{targetdb {1}} {sample_table {1}}字段.
字段CHANGE COLUMN
使用MySQL Migration向导会成功。
将字段改回TINYINT(1)。