Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment autoriser une chaîne vide pour un entier dans MySQL?

Il y a 2 façons de procéder.

  1. Pour la session MySQL en cours (solution temporaire)

Exécutez d'abord la requête pour obtenir le mode SQL actuel de votre serveur mysql.

    mysql> SELECT @@sql_mode;
    +----------------------------------------------------------------+
    | @@sql_mode                                                     |
    +----------------------------------------------------------------+
    |STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION  |
    +----------------------------------------------------------------+
    1 row in set (0.00 sec)

Si le résultat contient STRICT_TRANS_TABLES , vous devez supprimer cette valeur pour permettre à la requête d'insertion de transmettre la valeur NULL. Assurez-vous que votre utilisateur mysql dispose des privilèges pour appliquer ces modifications et redémarrez Mysql Server après l'avoir appliqué.

    SET GLOBAL sql_mode = '';
  1. Pour la durée de vie de Mysql (solution permanente)

Vous devez mettre à jour le fichier my.cnf. L'emplacement de ce fichier est :\etc\my.cnf ou \etc\mysql\mysql.cnf

Il y aura des paramètres par défaut définis sous [mysqld] comme

[mysqld]
innodb_file_per_table=1
default-storage-engine=MyISAM
performance-schema=0
max_allowed_packet=268435456
open_files_limit=10000

Ajoutez simplement une ligne en dessous

sql-mode=""

Assurez-vous de redémarrer Mysql Server après avoir modifié ce fichier. Normalement, l'utilisateur root sera le propriétaire du fichier, vous devez donc vous connecter avec l'utilisateur root sur le serveur.

Pour plus de détails pour comprendre ce que fait ce mode SQL.

STRICT_TRANS_TABLES

Activez le mode SQL strict pour les moteurs de stockage transactionnels et, si possible, pour les moteurs de stockage non transactionnels. Pour plus de détails, consultez Mode SQL strict.

Référez-vous :http://dev.mysql.com /doc/refman/5.7/fr/sql-mode.html#sqlmode_strict_trans_tables

NO_AUTO_CREATE_USER

Empêchez l'instruction GRANT de créer automatiquement de nouveaux comptes d'utilisateur si elle le ferait autrement, sauf si des informations d'authentification sont spécifiées. L'instruction doit spécifier un mot de passe non vide utilisant IDENTIFIED BY ou un plug-in d'authentification utilisant IDENTIFIED WITH.

Référez-vous :http://dev.mysql.com /doc/refman/5.7/en/sql-mode.html#sqlmode_no_auto_create_user

NO_ENGINE_SUBSTITUTION

Contrôlez la substitution automatique du moteur de stockage par défaut lorsqu'une instruction telle que CREATE TABLE ou ALTER TABLE spécifie un moteur de stockage désactivé ou non compilé.

Référez-vous :http://dev.mysql.com /doc/refman/5.7/en/sql-mode.html#sqlmode_no_engine_substitution