sql >> Database >  >> RDS >> Mysql

Hoe een lege string voor integer in MySQL toe te staan?

Er zijn 2 manieren om dit te doen.

  1. Voor huidige Mysql-sessie (tijdelijke oplossing)

Voer eerst de query uit om de huidige SQL-modus van uw mysql-server te krijgen.

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

Als het resultaat STRICT_TRANS_TABLES . bevat , moet u die waarde verwijderen om de insert-query de NULL-waarde door te geven. Zorg ervoor dat uw mysql-gebruiker privileges heeft om deze wijzigingen toe te passen en start Mysql Server opnieuw nadat u dit heeft toegepast.

    SET GLOBAL sql_mode = '';
  1. Voor de levensduur van Mysql (permanente oplossing)

U moet het my.cnf-bestand bijwerken. Locatie van dat bestand is:\etc\my.cnf of \etc\mysql\mysql.cnf

Er zullen enkele standaard parameters zijn ingesteld onder [mysqld] zoals

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

Voeg daar gewoon een regel onder toe

sql-mode=""

Zorg ervoor dat u Mysql Server opnieuw start nadat u dit bestand hebt gewijzigd. Normaal gesproken is root-gebruiker de eigenaar van het bestand, dus u moet inloggen met root-gebruiker op de server.

Voor meer details om te begrijpen wat deze SQL-modus doet.

STRICT_TRANS_TABLES

Schakel de strikte SQL-modus in voor transactionele opslag-engines, en indien mogelijk voor niet-transactionele opslag-engines. Zie Strikte SQL-modus voor meer informatie.

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

NO_AUTO_CREATE_USER

Voorkom dat de GRANT-verklaring automatisch nieuwe gebruikersaccounts maakt als dit anders zou gebeuren, tenzij authenticatie-informatie is opgegeven. De verklaring moet een niet-leeg wachtwoord specificeren met IDENTIFICEERD DOOR of een authenticatie-plug-in die IDENTIFICEERD WITH gebruikt.

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

NO_ENGINE_SUBSTITUTION

Beheer automatische vervanging van de standaard opslag-engine wanneer een instructie zoals CREATE TABLE of ALTER TABLE een opslag-engine specificeert die is uitgeschakeld of niet is gecompileerd.

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



  1. Parallellisme komt naar VACUUM

  2. Taal wijzigen van systeem- en foutmeldingen in PostgreSQL

  3. Bouw een contactenboek met Python, PyQt en SQLite

  4. Replicatiefailover voor MySQL en MariaDB beheren met pre- of post-failoverscripts