sql >> Database >  >> RDS >> Mysql

ER_TRUNCATED_WRONG_VALUE:Onjuiste datum/tijd-waarde

Blijkbaar is de datetime-waarde geen geldige MySQL Datetime . Maar er is een oplossing om de Server SQL-modi .

Om de een of andere reden zijn in mijn ontwikkelserver de MySQL-standaardmodusconfiguraties volledig verwijderd. Daarom waren er geen beperkingen op hoe ik de datetime kon invoegen.

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

Aan de andere kant waren er op de productieserver een heleboel beperkingen die de mysql-server vertelden welke soorten datum- en tijdindelingen moesten worden geaccepteerd.

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

Dit is geen veilige methode, maar ik heb de MySQL-restrictiemodi gewijzigd in no_engine_substitution , en voila, alles werkt (bijna) als een tierelier. U moet de GLOBAL- en SESSION-modi wijzigen om dit te laten werken.

De standaard SQL-modus is 'NO_ENGINE_SUBSTITUTION', dus we zullen de modus daaraan aanpassen. Er zijn meer modi die je kunt toevoegen:

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

Nu moeten de GLOBAL- en SESSION-modus worden ingesteld op 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. Geen volledige reeksvermenigvuldiging (product) ontvangen in CONNECT-BY-query

  2. Oracle:meerdere tabelupdates => ORA-01779:kan geen kolom wijzigen die is toegewezen aan een niet-sleutelbewaarde tabel

  3. Herbouw het model zonder verlies van gegevens in MySQL voor Symfony

  4. Krijg de grootte van de array in oracle sql