J'ai une table de base de données pour les utilisateurs qui a une configuration similaire à ceci:MySQL permet des inserts même lorsque les champs requis ne sont pas présents
+---------------------+--------------+------+-----+------------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------------------+--------------+------+-----+------------+----------------+
| id_user | int(5) | NO | PRI | NULL | auto_increment |
| login | varchar(50) | NO | | | |
| password | varchar(50) | NO | | | |
| address | varchar(255) | NO | | NULL | |
+---------------------+--------------+------+-----+------------+----------------+
Puisque le champ d'adresse est non nulle et la valeur par défaut est null, cela devrait effectivement rendre le champ d'adresse requis, non?
Mais quand j'effectue une requête telle que la suivante:
INSERT INTO mydatabase.users
SET
mydatabase.users.login='test_username',
mydatabase.users.password='test_password'
Il enregistre avec succès l'utilisateur sans se plaindre du champ d'adresse, qui est définie sur un espace vide.
Ce qui pourrait être à l'origine de cela? Je m'attends à une erreur dans ce genre de situation. Je l'ai essayé avec MySQL 5.5 et 5.6.
Apprenez quelque chose de nouveau tous les jours, merci! J'ai ajouté ceci à mon fichier my.ini: 'sql-mode =" STRICT_TRANS_TABLES "' et maintenant ça marche comme je m'y attendais. – Chris