Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

ER_TRUNCATED_WRONG_VALUE:गलत डेटाटाइम मान

जाहिर है, डेटाटाइम मान मान्य नहीं है MySQL डेटाटाइम . लेकिन सर्वर SQL मोड्स

किसी कारण से, मेरे विकास सर्वर में, 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 . में बदल दिया है , और वोइला, सब कुछ एक आकर्षण (लगभग) की तरह काम करता है। इसके काम करने के लिए आपको वैश्विक और सत्र मोड बदलना होगा।

मानक SQL मोड 'NO_ENGINE_SUBSTITUTION' है, इसलिए हम उस पर मोड डाल देंगे। ऐसे और भी तरीके हैं जिन्हें आप कठिन जोड़ सकते हैं:

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

अब वैश्विक और सत्र मोड को 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. Android mySql से डेटा प्राप्त करता है

  2. मेरे सॉकेट.आईओ स्ट्रीम में प्राप्त डेटा नहीं भेज सकता?

  3. गूगल मैप्स एपीआई का उपयोग करके mySQL डेटाबेस में वर्तमान जीपीएस निर्देशांक भेजें

  4. mysql तालिका पर स्थानिक सूचकांक का उपयोग करके निकटतम भू निर्देशांक का चयन करना काम नहीं कर रहा है

  5. MySQL में सेलेक्ट करें