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

Automaticky připněte struny na správnou délku na vložce

Ve skutečnosti MySQL ve výchozím nastavení zkracuje řetězce na šířku sloupce. Generuje varování, ale umožňuje vložení.

mysql> create table foo (str varchar(10));
mysql> insert into foo values ('abcdefghijklmnopqrstuvwxyz');
Query OK, 1 row affected, 1 warning (0.00 sec)
mysql> show warnings;
+---------+------+------------------------------------------+
| Level   | Code | Message                                  |
+---------+------+------------------------------------------+
| Warning | 1265 | Data truncated for column 'str' at row 1 | 
+---------+------+------------------------------------------+
mysql> select * from foo;
+------------+
| str        |
+------------+
| abcdefghij | 
+------------+

Pokud nastavíte přísný režim SQL, změní se varování na chybu a odmítne vložení.

K vašemu komentáři:Režim SQL je konfigurace serveru MySQL. Pravděpodobně to není způsobeno PDO, ale na druhou stranu je to možné, protože každý klient může nastavit režim SQL pro svou relaci.

Aktuální globální hodnotu nebo hodnotu relace sql_mode můžete načíst pomocí následujících příkazů:

SELECT @@GLOBAL.sql_mode;
SELECT @@SESSION.sql_mode;

Výchozí by měl být prázdný řetězec (žádné nastavené režimy). Režim SQL můžete nastavit v my.cnf soubor s --sql-mode možnost pro mysqld nebo pomocí SET prohlášení.

Aktualizace:MySQL 5.7 a novější nastavují ve výchozím nastavení přísný režim. Viz https://dev.mysql.com/doc/ refman/5.7/en/sql-mode.html



  1. Seřaďte uživatele v mysql podle jejich bodů

  2. MySQL:Klonování databáze MySQL na stejné instanci MySql

  3. Mělo by mít MySQL nastavené časové pásmo na UTC?

  4. Hodnoty oddělené čárkami v Oracle