当我在 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个表列的默认值。谁知道为什么会自动添加?对此有解决方案吗?
答案 0 :(得分:3)
根据版本MariaDB
之前的MariaDB documentation 10.1.7
和版本MySQL
之前的5.7
,将此类列转换为NOT NULL列,默认值为但是,然后两个DB都改变了它们的行为,并且当前该列被转换为NOT NULL,但是没有默认值。
因此,您可以更改其中一个数据库版本以实现相同的行为
答案 1 :(得分:0)
如果列定义不包含显式DEFAULT值,则MySQL确定默认值。
答案 2 :(得分:0)
由于主键不能为NULL&不能重复,如果你没有在记录插入时为它指定一个值,MYSQL会为第一条记录分配默认值。 您可以将此主键设置为自动增量,如果需要,也可以在自动增量类型后插入值(如果需要)。