Mysql
 sql >> Database >  >> RDS >> Mysql

Come consentire una stringa vuota per un intero in MySQL?

Ci sono 2 modi per farlo.

  1. Per la sessione corrente di MySQL (soluzione temporanea)

Prima esegui la query per ottenere la modalità SQL corrente del tuo server mysql.

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

Se il risultato contiene STRICT_TRANS_TABLES , devi rimuovere quel valore per consentire alla query di inserimento di passare il valore NULL. Assicurati che il tuo utente mysql disponga dei privilegi per applicare queste modifiche e riavvia Mysql Server dopo averlo applicato.

    SET GLOBAL sql_mode = '';
  1. Per tutta la vita di Mysql (soluzione permanente)

Devi aggiornare il file my.cnf. La posizione di quel file è:\etc\my.cnf o \etc\mysql\mysql.cnf

Ci saranno alcuni parametri predefiniti impostati in [mysqld] come

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

Basta aggiungere una riga sotto quella

sql-mode=""

Assicurati di riavviare Mysql Server dopo aver modificato questo file. Normalmente l'utente root sarà il proprietario del file, quindi devi accedere con l'utente root sul server.

Per maggiori dettagli per capire cosa fa questa modalità SQL.

STRICT_TRANS_TABLES

Abilita la modalità SQL rigorosa per i motori di archiviazione transazionali e, quando possibile, per i motori di archiviazione non transazionali. Per i dettagli, consulta Modalità SQL rigorosa.

Fare riferimento a:http://dev.mysql.com /doc/refman/5.7/en/sql-mode.html#sqlmode_strict_trans_tables

NO_AUTO_CREATE_USER

Impedisce all'istruzione GRANT di creare automaticamente nuovi account utente se altrimenti lo farebbe, a meno che non vengano specificate le informazioni di autenticazione. L'istruzione deve specificare una password non vuota utilizzando IDENTIFIED BY o un plug-in di autenticazione utilizzando IDENTIFIED WITH.

Fare riferimento a:http://dev.mysql.com /doc/refman/5.7/en/sql-mode.html#sqlmode_no_auto_create_user

NESSUNA_SOSTITUZIONE_ENGINE

Controlla la sostituzione automatica del motore di archiviazione predefinito quando un'istruzione come CREATE TABLE o ALTER TABLE specifica un motore di archiviazione disabilitato o non compilato.

Fare riferimento a:http://dev.mysql.com /doc/refman/5.7/en/sql-mode.html#sqlmode_no_engine_substitution