Ralat INSERT SQL: Pemangkasan Data
Isu biasa apabila mengisi pangkalan data melalui fail kelompok ialah ralat "rentetan atau data binari akan dipenggal". Ralat ini timbul apabila cuba memasukkan data ke dalam medan pangkalan data yang lebih kecil daripada data itu sendiri.
Fail data.sql
mungkin mengandungi pernyataan INSERT yang menyasarkan jadual Customers
dengan lajur seperti CustomerID
, CompanyName
dan Phone
. Ralat menunjukkan bahawa satu atau lebih lajur ini menerima data melebihi panjang yang ditentukan. Contohnya, lajur Phone
dengan kekangan VARCHAR(8)
akan gagal jika nombor telefon yang dimasukkan mempunyai lebih daripada 8 aksara.
Langkah Penyelesaian Masalah:
Periksa Skema Jadual: Semak struktur jadual Customers
dengan teliti (menggunakan alat seperti SQL Server Management Studio atau alat pengurusan pangkalan data yang serupa). Perhatikan jenis data dan panjang setiap lajur, terutamanya CustomerID
, CompanyName
dan Phone
.
Kenal pasti Data yang Menyinggung: Periksa fail data.sql
. Bandingkan data yang dimasukkan untuk setiap lajur dengan panjang lajur yang sepadan dalam skema pangkalan data. Ini akan menentukan lajur yang menyebabkan ralat pemangkasan.
Laraskan Data atau Panjang Lajur: Terdapat dua penyelesaian utama:
data.sql
agar sepadan dengan panjang lajur.Customers
untuk menampung nilai data yang lebih besar. Gunakan pernyataan ALTER TABLE
untuk mengubah suai jenis data lajur (cth., tukar VARCHAR(8)
kepada VARCHAR(20)
untuk nombor telefon).Memahami Kod Ralat:
Mesej ralat selalunya termasuk kod seperti "Tahap 16, Negeri 4," memberikan konteks lanjut. Tahap 16 mencadangkan ralat kecil, manakala Negeri 4 biasanya menunjukkan pelanggaran sintaks atau kekangan.
Sumber Lanjut:
Untuk mendapatkan maklumat yang lebih terperinci tentang kod ralat tertentu (seperti 8152 yang disebut dalam teks asal), rujuk dokumentasi Microsoft SQL Server rasmi atau sumber dalam talian yang boleh dipercayai. Sumber ini menawarkan penjelasan dan penyelesaian yang komprehensif untuk pelbagai ralat SQL.
Atas ialah kandungan terperinci Mengapa pernyataan SQL INSERT saya menghasilkan ralat 'Data Rentetan atau Binari Akan Dipenggal'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!