MySQL 5.0, il y a une option sql_mode
vous pouvez définir, que ce soit dans le my.cnf
ou lors du démarrage (--sql-mode='<option>'
) ou lors d'une session en cours d'exécution. Lorsque vous réglez-le sur
sql_mode=STRICT_ALL_TABLES
mysql n'émettra un avertissement et insérez la mauvaise valeur de toute façon, mais il refusera votre déclaration avec une erreur.
See also in the manual
Exemple:
mysql> create table asdf (id int);
Query OK, 0 rows affected (0.13 sec)
mysql> insert into asdf value ('Hello');
Query OK, 1 row affected, 1 warning (0.38 sec)
mysql> show warnings;
+---------+------+-----------------------------------------------------------+
| Level | Code | Message |
+---------+------+-----------------------------------------------------------+
| Warning | 1366 | Incorrect integer value: 'Hello' for column 'id' at row 1 |
+---------+------+-----------------------------------------------------------+
1 row in set (0.02 sec)
mysql> select * from asdf;
+------+
| id |
+------+
| 0 |
+------+
1 row in set (0.03 sec)
mysql> set SESSION sql_mode=STRICT_ALL_TABLES;
Query OK, 0 rows affected (0.00 sec)
mysql> insert into asdf value ('Hello');
ERROR 1366 (HY000): Incorrect integer value: 'Hello' for column 'id' at row 1
mysql>
+1 pour l'exemple détaillé avant et après le réglage de l'option. – ripper234
Dites ... comment exactement dois-je modifier le paramètre my.ini? J'ai essayé d'ajouter sql_mode = "STRICT_ALL_TABLES" dans la section [mysqld], mais cela n'a pas eu l'effet escompté. – ripper234
(j'ai redémarré mysqld, bien sûr) – ripper234