Mysql 4 vs Mysql 5 поле автоинкремента при вставке - PullRequest
3 голосов
/ 30 декабря 2010

Я узнал об этом по пути, но не могу понять, где я это читал или слышал, так как я ничего не нашел в Интернете, поддерживающего это, но я помню, что при обновлении с mysql4.x до mysql5.xодно из обязательных изменений состояло в том, что поле автоинкремента для вставок должно было измениться с '' на NULL, если оно было включено.

Я знаю, что его в любом случае необязательно иметь во вставке, но только для точкиинтерес ...

Mysql 4.x позволит: INSERT INTO TABLE (table_id, name, location) VALUES ('', 'john', 'NY'); ​​

Но mysql5.x должен был иметь: INSERT INTO TABLE (table_id, name, location) VALUES ( NULL , 'john', 'NY'); ​​

Я не могу найти какую-либо информацию оСайт mysql поддерживает это, но я точно знаю, что в mysql 5.x выдается ошибка, и я знаю, что она работала с '' в 4.x, но где это задокументировано?

Ответы [ 2 ]

1 голос
/ 30 декабря 2010

Неважно, mysql все еще конвертируется в целое число

mysql> CREATE TABLE some_test ( id int(10) unsigned NOT NULL auto_increment, primary key(id));
Query OK, 0 rows affected (0.00 sec)

mysql> insert into some_test values ('');
Query OK, 1 row affected, 1 warning (0.00 sec)

mysql> show warnings;
+---------+------+------------------------------------------------------+
| Level   | Code | Message                                              |
+---------+------+------------------------------------------------------+
| Warning | 1264 | Out of range value adjusted for column 'id' at row 1 |
+---------+------+------------------------------------------------------+
1 row in set (0.00 sec)

mysql> select * from some_test;
+----+
| id |
+----+
|  1 |
+----+
1 row in set (0.00 sec)

Однако я предлагаю использовать 0, чтобы избежать этого предупреждения

1 голос
/ 30 декабря 2010

В документах 4.1 и 5.0 указано, что требуется 0 или NULL:

Не указано значение для столбца AUTO_INCREMENT, поэтому MySQL назначенпорядковые номера автоматически.Вы также можете явно присвоить NULL или 0 столбцу для генерации порядковых номеров.

...