Mysql
 sql >> база данни >  >> RDS >> Mysql

ER_TRUNCATED_WRONG_VALUE:Неправилна стойност за дата и час

Очевидно стойността за дата и час не е валиден MySQL Datetime . Но има работа около модифицирането на Server SQL Modes .

По някаква причина в моя сървър за разработка конфигурациите на режима по подразбиране на MySQL бяха напълно премахнати. Следователно нямаше ограничения за това как мога да вмъкна дата и час.

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

На производствения сървър, от друга страна, имаше много ограничения, които указваха на mysql сървъра какви видове формати за дата и час да приеме.

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

Това не е безопасен метод, но промених режимите на ограничаване на MySQL на no_engine_substitution , и готово, всичко работи като чар (почти). Трябва да промените режимите GLOBAL и SESSION, за да работи това.

Стандартният SQL режим е 'NO_ENGINE_SUBSTITUTION', така че ще поставим режима към него. Има още режими, които можете да добавите трудни:

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

Сега режимът GLOBAL и SESSION трябва да бъдат зададени на 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. pdo променливата е недефинирана във функцията mysql

  2. Производителност на Mysql Query. Коя е най-добрата?

  3. Схема за уеб разработка на сървъри за сцениране и производство, използващи Git Push

  4. Предотвратяване на едновременни транзакции в уеб приложение

  5. да изтриете качения файл от масив от идентификатори, когато са изтрити в joomla?