sql >> Database teknologi >  >> RDS >> Mysql

ER_TRUNCATED_WRONG_VALUE:Forkert dato-tidsværdi

Tilsyneladende er datetime-værdien ikke en gyldig MySQL Datetime . Men der er et arbejde omkring at ændre Server SQL-tilstande a> .

Af en eller anden grund blev MySQL-standardtilstandskonfigurationerne fuldstændigt fjernet i min udviklingsserver. Derfor var der ingen begrænsninger for, hvordan jeg kunne indsætte datetime.

mysql> select @@sql_mode;
    +------------+
    | @@sql_mode |
    +------------+
    |            |
    +------------+
    1 row in set (0.00 sec)

På produktionsserveren på den anden side var der et væld af restriktioner, der fortalte mysql-serveren, hvilke slags datetime-formater den skulle acceptere.

mysql> select @@sql_mode;
+-------------------------------------------------------------------------------------------------------------------------------------------+
| @@sql_mode                                                                                                                                |
+-------------------------------------------------------------------------------------------------------------------------------------------+
| ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |
+-------------------------------------------------------------------------------------------------------------------------------------------+

Dette er ikke en sikker metode, men jeg ændrede MySQL-begrænsningstilstandene til no_engine_substitution , og voila, alt fungerer som en charme (næsten). Du skal ændre tilstandene GLOBAL og SESSION for at dette virker.

Standard SQL-tilstand er 'NO_ENGINE_SUBSTITUTION', så vi vil sætte tilstanden til det. Der er flere tilstande, du kan tilføje hårde:

SET GLOBAL sql_mode = '<mode>';
SET SESSION sql_mode = '<mode>';

Nu skal tilstanden GLOBAL og SESSION indstilles til NO_ENGINE_SUBSTITUTION

mysql> SET SESSION sql_mode = 'NO_ENGINE_SUBSTITUTION';
mysql> SELECT @@SESSION.sql_mode;
+------------------------+
| @@SESSION.sql_mode     |
+------------------------+
| NO_ENGINE_SUBSTITUTION |
+------------------------+
1 row in set (0.00 sec)

mysql> SET GLOBAL sql_mode = 'NO_ENGINE_SUBSTITUTION';
mysql> SELECT @@GLOBAL.sql_mode;
+------------------------+
| @@GLOBAL.sql_mode      |
+------------------------+
| NO_ENGINE_SUBSTITUTION |
+------------------------+
1 row in set (0.00 sec)


  1. QMYSQL-forespørgsel mislykkedes

  2. Skal en enum i MySQL IKKE være NULL?

  3. Oracle Rows to Column Transformation

  4. Sådan overføres SQLite db til webserver på Android-telefon (android)