Ketika kueri SQL di bawah ini dijalankan:
UPDATE shop_category
SET name = 'Secolul XVI - XVIII'
AND name_eng = '16th to 18th centuries'
WHERE category_id = 4768
Kesalahan berikut muncul:
1292 - Truncated incorrect DOUBLE value: 'Secolul XVI - XVIII'
Bagaimana cara memperbaikinya?
shop_category
struktur meja:
category_id mediumint(8)
name varchar(250)
name_eng varchar(250)
Jawaban:
Anda tidak perlu
AND
kata kunci. Berikut sintaks yang benar dari pernyataan UPDATE :sumber
Saya mendapatkan pengecualian ini bukan karena DAN bukannya koma, sebenarnya saya memiliki pengecualian ini hanya karena saya tidak menggunakan tanda kutip di mana klausa.
Seperti kueri saya tadi
ketika saya mengubah tempat klausa untuk
where column2 in ('00012121');
kemudian permintaan berfungsi dengan baik untuk saya.sumber
STRICT_TRANS_TABLES
menetapkansql_mode
dan mencoba memperbarui bidang terbatas dengan (yang tampaknya) nilai numerik dalamwhere
klausa melempar kesalahan. Mengubah mode, itu melemparkan peringatan, tetapi masih tidak menerapkan pembaruan. Setelah diperiksa lebih dekat, kolom yang digunakan dalam klausa di mana, meskipun hanya memiliki apa yang tampak sebagai nilai integer, sebenarnya adalahvarchar(20)
Coba ganti
AND
dengan,
The UPDATE Sintaks menunjukkan tanda koma harus digunakan sebagai pemisah.
sumber
Apa itu pada dasarnya
Ini sintaks yang salah yang menyebabkan MySQL berpikir Anda mencoba melakukan sesuatu dengan kolom atau parameter yang memiliki tipe "DOUBLE" yang salah.
Belajarlah dari kesalahan saya
Dalam kasus saya, saya memperbarui kolom varchar dalam pengaturan tabel
NULL
tempat nilainya0
berada. Permintaan pembaruan saya seperti ini:Sekarang, karena tipe aktualnya
myValue
adalahVARCHAR(255)
ini memberikan peringatan:Dan sekarang
myTable
praktis kosong, karenamyValue
sekarangNULL
untuk SETIAP BARIS dalam tabel! Bagaimana ini bisa terjadi?* Menjerit internal *
Lebih dari 30rb baris sekarang memiliki data yang hilang.
* Menjerit internal meningkat *
Syukurlah untuk backup. Saya dapat memulihkan semua data.
* Intensitas menjerit internal lebih rendah *
Kueri yang diperbaiki adalah sebagai berikut:
Saya berharap ini lebih dari sekedar peringatan sehingga tidak terlalu berbahaya untuk melupakan kutipan itu.
* Akhiri menjerit internal *
sumber
Saya hanya membuang-buang waktu untuk hal ini dan ingin menambahkan kasus tambahan di mana kesalahan ini muncul dengan sendirinya.
Uji data
Masalahnya adalah
ORDER BY value1+0
- tipe casting.Saya tahu bahwa itu tidak menjawab pertanyaan tetapi ini adalah hasil pertama di Google untuk kesalahan ini dan seharusnya memiliki contoh lain di mana kesalahan ini muncul dengan sendirinya.
sumber
Terutama string kueri yang tidak valid akan memberikan peringatan ini.
Salah karena kesalahan sintaksis halus (tanda kurung kanan salah tempat) saat menggunakan
INSTR
fungsi:Benar:
sumber
Tampaknya mysql menangani tipe casting dengan anggun dengan pernyataan SELECT. Bidang shop_id adalah tipe varchar tetapi pernyataan pilih berfungsi
Tetapi ketika Anda mencoba memperbarui bidang
Gagal dengan kesalahan Nilai terpotong salah GANDA: '1t5hxq9'
Anda harus memasukkan shop_id 26244317283 dalam tanda kutip '26244317283' agar permintaan bisa berfungsi karena bidangnya bertipe varchar bukan int
sumber
Jika Anda mendapatkan masalah ini dengan sisipan yang terlihat seperti di bawah ini, masalahnya mungkin adalah kurangnya ruang di antaranya
--
dan teks komentar:Masalah dengan ini adalah bahwa
--something
seharusnya benar-benar-- something
dengan ruang.sumber
Saya mengalami kesalahan ini ketika menggunakan bindParam, dan menentukan PDO :: PARAM_INT di mana saya benar-benar melewati sebuah string. Mengubah ke PDO :: PARAM_STR memperbaiki kesalahan.
sumber
Saya memang mengalami kesalahan ini ketika saya mencoba melakukan WHERE EXIST di mana subquery cocok dengan 2 kolom yang secara tidak sengaja adalah tipe yang berbeda. Kedua meja itu juga merupakan mesin penyimpanan yang berbeda.
Satu kolom adalah CHAR (90) dan yang lainnya adalah BIGINT (20).
Satu meja adalah InnoDB dan yang lainnya adalah MEMORY.
Bagian dari permintaan:
Mengubah jenis kolom pada satu kolom dari BIGINT ke CHAR menyelesaikan masalah.
sumber