Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Schneiden Sie die Saiten beim Einlegen automatisch auf die richtige Länge

Tatsächlich kürzt MySQL Strings standardmäßig auf die Spaltenbreite. Es generiert eine Warnung, erlaubt aber die Einfügung.

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

Wenn Sie den strikten SQL-Modus einstellen, wird die Warnung in einen Fehler umgewandelt und die Einfügung abgelehnt.

Zu Ihrem Kommentar:Der SQL-Modus ist eine MySQL-Server-Konfiguration. Es ist wahrscheinlich nicht PDO, das es verursacht, aber andererseits ist es möglich, weil jeder Client den SQL-Modus für seine Sitzung einstellen kann.

Sie können den aktuellen globalen oder Sitzungs-sql_mode-Wert mit den folgenden Anweisungen abrufen:

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

Der Standardwert sollte eine leere Zeichenfolge sein (keine Modi festgelegt). Sie können den SQL-Modus in Ihrer my.cnf einstellen Datei, mit dem --sql-mode Option für mysqld oder mit einem SET Aussage.

Update:MySQL 5.7 und höher legt standardmäßig den strengen Modus fest. Siehe https://dev.mysql.com/doc/ refman/5.7/en/sql-mode.html