Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL默认与MariaDB默认_Mysql_Mariadb - Fatal编程技术网

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)