同步模型将UNSIGNED BIGINT修改为UNSIGNED BIGINT(19)

时间:2017-02-17 07:26:07

标签: mysql mysql-workbench mariadb synchronize forward-engineer

环境:

  • Ubuntu 14.04
  • MySql Workbench 6.2.4
  • MariaDB 10

当我尝试将模型与数据库模式同步时,我有一个表定义的类型UNSIGNED BIGINT(即UNSIGNED BIGINT(20))然后它变为UNSIGNED BIGINT(19)。

使用正向工程的相同过程适用于这些数据类型。

模型

model

同步模型

Synchronizing model

CREATE TABLE IF NOT EXISTS `test`.`table` (
  `id` BIGINT(19) UNSIGNED NOT NULL,
  PRIMARY KEY (`id`))
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8
COLLATE = utf8_general_ci;

正向工程

forward engineering

CREATE TABLE IF NOT EXISTS `test.`table1` (
`id` BIGINT UNSIGNED NOT NULL,
PRIMARY KEY(`id`))
ENGINE = InnoDB;

可能是MySql Workbench中的错误吗?

2 个答案:

答案 0 :(得分:1)

(19)(以及其他BIGINT)末尾的INTs之类的内容毫无意义。它是否存在无关紧要。这个数字也不重要;那个(20)也没关系。

所有口味的编译和执行都相同。

答案 1 :(得分:0)

我找到的解决方案是定义de type like

UNSIGNED BIGINT(20) --OK

而不是

UNSIGNED BIGINT  --KO

MySql bug

在实践中,似乎没有影响,正如我们在示例中看到的那样 的为例

create table test.biginttest (a BIGINT, b BIGINT(10), c BIGINT(15) ZEROFILL);

INSERT INTO test.biginttest VALUES (-10,10,-10);

INSERT INTO test.biginttest VALUES (9223372036854775808,9223372036854775808,9223372036854775808);

select * from test.biginttest;

<强>结果

enter image description here