Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie erlaube ich eine leere Zeichenfolge für Integer in MySQL?

Dafür gibt es zwei Möglichkeiten.

  1. Für aktuelle MySQL-Sitzung (vorübergehende Lösung)

Führen Sie zuerst eine Abfrage aus, um den aktuellen SQL-Modus Ihres MySQL-Servers abzurufen.

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

Wenn das Ergebnis STRICT_TRANS_TABLES enthält , müssen Sie diesen Wert entfernen, damit die Einfügeabfrage den NULL-Wert übergeben kann. Stellen Sie sicher, dass Ihr mysql-Benutzer berechtigt ist, diese Änderungen zu übernehmen, und starten Sie Mysql Server neu, nachdem Sie diese Änderungen vorgenommen haben.

    SET GLOBAL sql_mode = '';
  1. For Life Time of Mysql (permanente Lösung)

Sie müssen meine.cnf-Datei aktualisieren. Speicherort dieser Datei ist:\etc\my.cnf oder \etc\mysql\mysql.cnf

Unter [mysqld] werden einige Standardparameter wie

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

Fügen Sie einfach eine Zeile darunter hinzu

sql-mode=""

Stellen Sie sicher, dass Sie Mysql Server neu starten, nachdem Sie diese Datei geändert haben. Normalerweise ist der Root-Benutzer der Besitzer der Datei, also müssen Sie sich mit dem Root-Benutzer auf dem Server anmelden.

Für weitere Details, um zu verstehen, was dieser SQL-Modus tut.

STRICT_TRANS_TABLES

Aktivieren Sie den strikten SQL-Modus für transaktionale Speicher-Engines und, wenn möglich, für nicht-transaktionale Speicher-Engines. Einzelheiten finden Sie unter Strenger SQL-Modus.

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

NO_AUTO_CREATE_USER

Verhindern Sie, dass die GRANT-Anweisung automatisch neue Benutzerkonten erstellt, wenn dies andernfalls der Fall wäre, es sei denn, Authentifizierungsinformationen sind angegeben. Die Anweisung muss ein nicht leeres Passwort mit IDENTIFIED BY oder ein Authentifizierungs-Plugin mit IDENTIFIED WITH angeben.

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

NO_ENGINE_SUBSTITUTION

Automatisches Ersetzen der Standardspeicher-Engine steuern, wenn eine Anweisung wie CREATE TABLE oder ALTER TABLE eine deaktivierte oder nicht einkompilierte Speicher-Engine angibt.

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