sql >> Databáze >  >> RDS >> Mysql

Jak povolit prázdný řetězec pro celé číslo v MySQL?

Existují 2 způsoby, jak to udělat.

  1. Pro aktuální relaci Mysql (dočasné řešení)

Nejprve proveďte dotaz, abyste získali aktuální režim SQL vašeho serveru mysql.

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

Pokud výsledek obsahuje STRICT_TRANS_TABLES , musíte tuto hodnotu odstranit, abyste umožnili vkládacímu dotazu předat hodnotu NULL. Ujistěte se, že váš uživatel mysql má oprávnění použít tyto změny a po použití restartujte Mysql Server.

    SET GLOBAL sql_mode = '';
  1. Pro Life Time of Mysql (trvalé řešení)

Musíte aktualizovat soubor my.cnf. Umístění tohoto souboru je:\etc\my.cnf nebo \etc\mysql\mysql.cnf

Pod [mysqld] budou nastaveny některé výchozí parametry jako

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

Stačí pod to přidat jeden řádek

sql-mode=""

Po změně tohoto souboru nezapomeňte restartovat Mysql Server. Normálně bude vlastníkem souboru uživatel root, takže se musíte přihlásit jako uživatel root na serveru.

Další podrobnosti o tom, co tento režim SQL dělá.

STRICT_TRANS_TABLES

Povolte přísný režim SQL pro transakční úložné stroje, a pokud je to možné, pro netransakční úložné stroje. Podrobnosti naleznete v části Přísný režim SQL.

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

NO_AUTO_CREATE_USER

Zabránit příkazu GRANT v automatickém vytváření nových uživatelských účtů, pokud by tak učinil, pokud nejsou zadány ověřovací informace. Příkaz musí specifikovat neprázdné heslo pomocí IDENTIFIED BY nebo ověřovacího pluginu pomocí IDENTIFIED WITH.

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

NO_ENGINE_SUBSTITUTION

Řídit automatické nahrazování výchozího úložiště, když příkaz jako CREATE TABLE nebo ALTER TABLE určuje úložiště, které je zakázáno nebo není zkompilováno.

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



  1. Jak zrychlit SELECT .. LIKE dotazy v MySQL na více sloupcích?

  2. Jak ukládat data s dynamickým počtem atributů v databázi

  3. Možnosti Sniffing, Embedding a RECOMPILE

  4. Objasnění časového pásma PHP/MySQL