mysql - 获取 PostgreSQL bool 字段时出现范围错误

标签 mysql postgresql mysql-workbench

我正在尝试使用 MySQL Workbench 工具将 PostgreSQL 数据库转换为 MySQL。似乎模式迁移工作正常 - 没有错误,但是当我尝试迁移数据时 - 我收到大量错误列表,看起来它们都是关于同一件事 - Postgres boolean 字段被获取为极大的整数,无法在 MySQL 中保存为 TINYINT:

ERROR: `mydb`.`my_table`:Range error fetching field 9 (value 140406775873536, target is MYSQL_TYPE_TINY)

有办法解决吗?

最佳答案

好的,我现在有解决方案了。

原因:

默认情况下,当使用 MySQL Workbench 中的向导将数据从 Postgres 迁移到 MySQL 时,如果 Postgres 字段为 bool 值,它将在 MySQL 中创建 TINYINT(1) 列,这就是我们遇到此错误的原因。

解决方案:

  1. 将 bool 字段更改为 INT

ALTER TABLEtargetdb.sample_tableCHANGE COLUMNfieldfieldINT NULL DEFAULT '1' COMMENT '' ;

  • 使用MySQL迁移向导将会成功。

  • 将该字段更改回 TINYINT(1)。

  • 关于mysql - 获取 PostgreSQL bool 字段时出现范围错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32892513/

    相关文章:

    javascript - 是否可以在 PostgreSQL 中使用 knex returning() 方法返回操作表中的所有行

    mysql - 合并 2 个 "strange"表中的数据

    mysql - 不能只显示多个交易的最大日期

    mysql - 使用mySQL进行数据库设计

    java - Spring MVC Hibernate多对多关系获取org.hibernate.exception.SQLGrammarException : Unknown column in 'on clause'

    sql - PostgreSQL 9.3 : Display result in specific format using array_agg function

    MySQL tableName.Ibd 文件大小巨大

    ruby-on-rails - 在 postgresql 应用程序的 rails 中运行迁移后的序列通知

    php - 在 PHP 中计算一堆结果

    mysql - 在 mysql 5.0.77 中定义触发器的语法错误