sql >> Database >  >> RDS >> Mysql

Knip snaren automatisch op de juiste lengte bij het invoegen

Eigenlijk kapt MySQL strings standaard af tot de kolombreedte. Het genereert een waarschuwing, maar laat de invoeging toe.

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

Als u de strikte SQL-modus instelt, verandert de waarschuwing in een fout en wordt de invoeging geweigerd.

Over uw opmerking:SQL-modus is een MySQL Server-configuratie. Het is waarschijnlijk niet de PDO die dit veroorzaakt, maar aan de andere kant is het mogelijk, omdat elke client de SQL-modus voor zijn sessie kan instellen.

U kunt de huidige globale of sessie sql_mode-waarde ophalen met de volgende instructies:

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

De standaard moet een lege tekenreeks zijn (geen modi ingesteld). U kunt de SQL-modus instellen in uw my.cnf bestand, met de --sql-mode optie voor mysqld, of gebruik een SET verklaring.

Update:MySQL 5.7 en hoger stelt standaard de strikte modus in. Zie https://dev.mysql.com/doc/ refman/5.7/en/sql-mode.html



  1. Gebruikersaccountbeheer, rollen, machtigingen, authenticatie PHP en MySQL - Deel 2

  2. Hoe GOTO te gebruiken in SQL Server

  3. Python Panda's - To_sql gebruiken om grote dataframes in brokken te schrijven

  4. SCHEMABINDING verwijderen uit een door de gebruiker gedefinieerde functie in SQL Server