programing

MySQL DEFAULT vsMariaDB 디폴트

firstcheck 2022. 10. 18. 21:46
반응형

MySQL DEFAULT vsMariaDB 디폴트

있습니다table_aauto_increment명명된 열id및 문자열 열 이름 지정name.

문의 실행:INSERT INTO table_a(id, name)VALUES(DEFAULT, 'test');

결과 대상(MySQL):

+----+------+
| id | name |
+----+------|
| 1  | test |
+----+------+

에서의 같은 스테이트먼트 실행MariaDB결과:

+----+------+
| id | name |
+----+------|
| 0  | test |
+----+------+

기타 시나리오:

편집하려고 했는데AUTO_INCREMENT테이블의 값을 30으로 설정합니다.MySQL은 30을 삽입하고 MariaDB는 0을 삽입합니다.

의 차이점은 무엇입니까?DEFAULT에 가치를 두다.INSERTMySQL과 MariaDB의 스테이트먼트이것은 MariaDB의 버그입니까, 아니면 정상적으로 동작하고 있습니까?

이 동작은 에 의해 제어됩니다.SQL_MODE='NO_AUTO_VALUE_ON_ZERO'MySQL과 MariaDB에 모두 포함되어 있습니다.그 차이를 관찰한다면, 아마도 당신이 다른 것을 가지고 있기 때문일 것이다.sql_mode예를 들어.

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)

언급URL : https://stackoverflow.com/questions/44536965/mysql-default-vs-mariadb-default

반응형