Mysql 5.5自动为主键添加默认值

时间:2018-03-20 09:02:28

标签: mysql mariadb

当我在 mysql 5.5 中运行以下查询时,即使我没有指定主键,我也能看到该表有一个默认值''

CREATE TABLE `test1` (
  `id` VARCHAR(10),
  `data` VARCHAR(50),
  PRIMARY KEY (`id`)
);

当我在 mysql 5.5 中运行以下查询时,即使我没有指定主键,我也能看到该表有一个默认值'0'

CREATE TABLE `test2` (
  `id` int(10),
  `data` VARCHAR(50),
  PRIMARY KEY (`id`)
);

这不会发生在 mariadb 10.2 中。

我曾经使用information_schema中的值比较数据库结构。但现在似乎无法比较5.5和10.2数据库中2个表列的默认值。谁知道为什么会自动添加?对此有解决方案吗?

3 个答案:

答案 0 :(得分:3)

根据版本MariaDB之前的MariaDB documentation 10.1.7和版本MySQL之前的5.7,将此类列转换为NOT NULL列,默认值为但是,然后两个DB都改变了它们的行为,并且当前该列被转换为NOT NULL,但是没有默认值。

因此,您可以更改其中一个数据库版本以实现相同的行为

答案 1 :(得分:0)

如果列定义不包含显式DEFAULT值,则MySQL确定默认值。

答案 2 :(得分:0)

由于主键不能为NULL&不能重复,如果你没有在记录插入时为它指定一个值,MYSQL会为第一条记录分配默认值。 您可以将此主键设置为自动增量,如果需要,也可以在自动增量类型后插入值(如果需要)。