Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak zezwolić na pusty ciąg dla liczb całkowitych w MySQL?

Można to zrobić na 2 sposoby.

  1. Dla bieżącej sesji MySQL (rozwiązanie tymczasowe)

Najpierw wykonaj zapytanie, aby uzyskać aktualny tryb SQL serwera mysql.

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

Jeśli wynik zawiera STRICT_TRANS_TABLES , musisz usunąć tę wartość, aby umożliwić wstawienie zapytania do przekazania wartości NULL. Upewnij się, że Twój użytkownik mysql ma uprawnienia do zastosowania tych zmian i zrestartuj Mysql Server po ich zastosowaniu.

    SET GLOBAL sql_mode = '';
  1. Na całe życie MySQL (rozwiązanie trwałe)

Musisz zaktualizować plik my.cnf. Lokalizacja tego pliku to:\etc\my.cnf lub \etc\mysql\mysql.cnf

Będzie kilka domyślnych parametrów ustawionych w [mysqld], takich jak

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

Wystarczy dodać jedną linię pod tym

sql-mode=""

Upewnij się, że ponownie uruchomiłeś Mysql Server po zmianie tego pliku. Normalnie użytkownik root będzie właścicielem pliku, więc musisz zalogować się jako użytkownik root na serwerze.

Aby uzyskać więcej informacji, aby zrozumieć, co robi ten tryb SQL.

STRICT_TRANS_TABLES

Włącz ścisły tryb SQL dla transakcyjnych aparatów pamięci masowej oraz, jeśli to możliwe, dla nietransakcyjnych aparatów pamięci masowej. Aby uzyskać szczegółowe informacje, zobacz Ścisły tryb SQL.

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

NO_AUTO_CREATE_USER

Zapobiegaj automatycznemu tworzeniu przez instrukcję GRANT nowych kont użytkowników, jeśli zrobiłoby to inaczej, chyba że określono informacje uwierzytelniające. Oświadczenie musi określać niepuste hasło za pomocą IDENTIFIED BY lub wtyczkę uwierzytelniającą za pomocą IDENTIFIED WITH.

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

NO_ENGINE_SUBSTITUTION

Kontroluj automatyczne zastępowanie domyślnego silnika pamięci masowej, gdy instrukcja, taka jak CREATE TABLE lub ALTER TABLE, określa silnik pamięci masowej, który jest wyłączony lub nieskompilowany.

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



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Błąd połączenia PDO podczas używania symfony i MAMP

  2. Jak używać operatora IN z JDBI?

  3. MySQL — WYBIERZ * DO WYJŚCIA LOKALNEGO ?

  4. Jak ustrukturyzować zapytanie SQL, aby znaleźć obiekt, który jest obiektem nadrzędnym dwóch określonych innych obiektów?

  5. Jak używać instrukcji CASE w MySQL