MySQL默认与MariaDB默认
我有MySQL默认与MariaDB默认,mysql,mariadb,Mysql,Mariadb,我有table\u a和auto\u increment列名为id,字符串列名为name 运行语句: 将a(id,name)值插入表中(默认为“test”) 结果发送到(MySQL): 在MariaDB中运行类似语句会导致: +----+------+ | id | name | +----+------| | 0 | test | +----+------+ 其他情况: 我尝试将表的自动增量值编辑为30。MySQL插入30,而MariaDB插入0 MySQL和MariaDB的INSERT语
table\u a
和auto\u increment
列名为id
,字符串列名为name
运行语句:
将a(id,name)值插入表中(默认为“test”)代码>
结果发送到(MySQL):
在MariaDB
中运行类似语句会导致:
+----+------+
| id | name |
+----+------|
| 0 | test |
+----+------+
其他情况:
我尝试将表的自动增量值编辑为30。MySQL插入30,而MariaDB插入0
MySQL和MariaDB的INSERT
语句中的DEFAULT
值有什么区别?这是MariaDB中的错误还是按预期工作?此行为由MySQL和MariaDB中的SQL\u MODE='NO\u AUTO\u VALUE\u ON\u ZERO'
控制。如果观察到差异,很可能是因为实例上的sql\u模式不同
MariaDB [test]> CREATE TABLE t (id BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY);
Query OK, 0 rows affected (0.20 sec)
MariaDB [test]> SET SQL_MODE='';
Query OK, 0 rows affected (0.00 sec)
MariaDB [test]> INSERT INTO t (id) VALUES (DEFAULT);
Query OK, 1 row affected (0.05 sec)
MariaDB [test]> SELECT * FROM t;
+----+
| id |
+----+
| 1 |
+----+
1 row in set (0.00 sec)
MariaDB [test]> DROP TABLE t;
Query OK, 0 rows affected (0.14 sec)
MariaDB [test]> CREATE TABLE t (id BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY);
Query OK, 0 rows affected (0.30 sec)
MariaDB [test]> SET SQL_MODE='NO_AUTO_VALUE_ON_ZERO';
Query OK, 0 rows affected (0.00 sec)
MariaDB [test]> INSERT INTO t (id) VALUES (DEFAULT);
Query OK, 1 row affected (0.03 sec)
MariaDB [test]> SELECT * FROM t;
+----+
| id |
+----+
| 0 |
+----+
1 row in set (0.00 sec)
您可以添加如何在MariaDB中创建表吗?(使用在此处显示创建表的表名
)。MariaDB中的表似乎没有自动增量集。创建表'table_a'('id'bigint(20)unsigned NOT NULL auto_increment,'name'varchar(10)NOT NULL,PRIMARY KEY('id'))ENGINE=InnoDB auto_increment=30 DEFAULT CHARSET=utf8
然后您应该尝试将此插入表_a(name)值('test');插入时丢弃id虽然它起作用,但我仍在试图找出是什么导致语句在MariaDB中插入0。返回表列的默认值。如果列没有默认值,则返回NULL。对于使用自动增量的整数列,返回0。
MariaDB [test]> CREATE TABLE t (id BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY);
Query OK, 0 rows affected (0.20 sec)
MariaDB [test]> SET SQL_MODE='';
Query OK, 0 rows affected (0.00 sec)
MariaDB [test]> INSERT INTO t (id) VALUES (DEFAULT);
Query OK, 1 row affected (0.05 sec)
MariaDB [test]> SELECT * FROM t;
+----+
| id |
+----+
| 1 |
+----+
1 row in set (0.00 sec)
MariaDB [test]> DROP TABLE t;
Query OK, 0 rows affected (0.14 sec)
MariaDB [test]> CREATE TABLE t (id BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY);
Query OK, 0 rows affected (0.30 sec)
MariaDB [test]> SET SQL_MODE='NO_AUTO_VALUE_ON_ZERO';
Query OK, 0 rows affected (0.00 sec)
MariaDB [test]> INSERT INTO t (id) VALUES (DEFAULT);
Query OK, 1 row affected (0.03 sec)
MariaDB [test]> SELECT * FROM t;
+----+
| id |
+----+
| 0 |
+----+
1 row in set (0.00 sec)