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

Automatycznie przycinaj struny do odpowiedniej długości na wstawce

W rzeczywistości MySQL domyślnie skraca ciągi do szerokości kolumny. Generuje ostrzeżenie, ale umożliwia wstawienie.

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 | 
+------------+

Jeśli ustawisz ścisły tryb SQL, zamieni ostrzeżenie w błąd i odrzuci wstawienie.

Komentarz:Tryb SQL to konfiguracja serwera MySQL. Prawdopodobnie to nie PDO powoduje to, ale z drugiej strony jest to możliwe, ponieważ każdy klient może ustawić tryb SQL dla swojej sesji.

Możesz pobrać bieżącą wartość globalną lub sesyjną sql_mode za pomocą następujących instrukcji:

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

Wartość domyślna powinna być pustym ciągiem (bez ustawionych trybów). Możesz ustawić tryb SQL w swoim my.cnf plik, z --sql-mode opcja dla mysqld lub użycie SET oświadczenie.

Aktualizacja:MySQL 5.7 i nowsze domyślnie ustawiają tryb ścisły. Zobacz https://dev.mysql.com/doc/ refman/5.7/pl/tryb-sql.html



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Korzystanie z ORDER BY i GROUP BY razem

  2. Sprawdź, czy wiersz istnieje, Laravel

  3. Kolejność MySQL według najlepszego dopasowania

  4. Laravel Eloquent porównuje datę z polem datetime

  5. Wskazówki dotyczące migracji z baz danych zastrzeżonych do baz danych typu open source