Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

ER_TRUNCATED_WRONG_VALUE:Nilai waktu-tanggal salah

Tampaknya, nilai datetime bukan MySQL Datetime yang valid . Tetapi ada cara untuk memodifikasi Mode SQL Server .

Untuk beberapa alasan, di server pengembangan saya, konfigurasi mode default MySQL telah dihapus sepenuhnya. Oleh karena itu tidak ada batasan bagaimana saya bisa memasukkan datetime.

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

Di server produksi di sisi lain, ada banyak batasan yang memberi tahu server mysql jenis format datetime apa yang harus diterima.

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

Ini bukan metode yang aman, tetapi saya mengubah mode pembatasan MySQL menjadi no_engine_substitution , dan voila, semuanya bekerja seperti pesona (hampir). Anda harus mengubah mode GLOBAL dan SESSION agar ini berfungsi.

Mode SQL standar adalah 'NO_ENGINE_SUBSTITUTION', jadi kami akan menempatkan mode itu. Ada lebih banyak mode yang bisa Anda tambahkan tangguh:

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

Sekarang mode GLOBAL dan SESSION harus disetel ke 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. MySQL Bagaimana cara menyisipkan catatan baru atau memperbarui bidang tergantung pada apakah itu ada?

  2. Kode Kesalahan MySQL:1193. Variabel sistem tidak dikenal

  3. Kueri dengan banyak nilai dalam satu kolom

  4. Sesi Hibernasi Tidak dapat dibuka untuk transaksi

  5. Memasukkan null ke dalam char(1)