Kod Ralat 1292: Nilai GANDA Salah Dipenggal dalam MySQL
Menghadapi kod ralat 1292 boleh mengecewakan, terutamanya apabila anda menegaskan bahawa anda tidak t menggunakan sebarang nilai berganda. Mari kita mendalami masalah dan meneroka penyelesaian yang berpotensi.
Dalam pertanyaan yang disediakan, anda cuba mengisi jadual dengan nilai daripada jadual lain menggunakan pernyataan INSERT...SELECT. Satu perincian penting ialah memastikan jenis data dan saiznya dalam kedua-dua jadual sepadan.
Secara khususnya, dalam mesej ralat, anda akan melihat bahawa terdapat nilai DOUBLE yang salah terlibat. Walau bagaimanapun, anda menyebut bahawa anda tidak mempunyai sebarang medan berganda dalam jadual anda. Berikut ialah punca yang berpotensi:
ta.phone_number
Medan ini berkemungkinan bukan dua kali ganda tetapi sebaliknya VARCHAR atau CHAR dalam kedua-dua jadual. Apabila anda melakukan pengiraan atau perbandingan yang melibatkan nilai berangka dalam rentetan, seperti dalam klausa WHERE untuk pemadanan panjang, MySQL mungkin cuba menukar rentetan itu kepada nilai berangka, mengakibatkan nilai DOUBLE tidak betul dipenggal.
Untuk menyelesaikannya isu ini, anda mempunyai dua pilihan:
CAST(REPLACE(REPLACE(REPLACE(REPLACE(ta.phone_number, '-', ''), ' ', ''), ')', ''),'(','') AS UNSIGNED) = 10
Dengan menukar nombor_telefon kepada jenis angka UNSIGNED, MySQL boleh melakukan dengan betul perbandingan berangka tanpa menukarnya kepada nilai DOUBLE.
Dengan menangani percanggahan jenis data ini, anda boleh mengelakkan ralat nilai DOUBLE yang tidak betul dipotong dan memastikan pemindahan data berjaya.
Atas ialah kandungan terperinci Mengapa Saya Mendapat Ralat MySQL 1292: Nilai DOUBLE Salah Dipotong Walaupun Tanpa Menggunakan Doubles?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!