Rumah > pangkalan data > tutorial mysql > Mengapa MySQL Melemparkan Ralat 'Lajur BLOB/TEXT dalam Spesifikasi Utama Tanpa Panjang', dan Bagaimana Saya Boleh Membetulkannya?

Mengapa MySQL Melemparkan Ralat 'Lajur BLOB/TEXT dalam Spesifikasi Utama Tanpa Panjang', dan Bagaimana Saya Boleh Membetulkannya?

DDD
Lepaskan: 2025-01-19 23:26:10
asal
180 orang telah melayarinya

Why Does MySQL Throw a

Ralat MySQL: Lajur BLOB/TEXT dalam Spesifikasi Utama Tanpa Panjang

Artikel ini menangani ralat MySQL biasa: "BLOB/TEXT column 'message_id' yang digunakan dalam spesifikasi kunci tanpa panjang kunci." Ini biasanya timbul apabila mengubah suai kunci utama jadual, contohnya, menukarnya daripada varchar(255) kepada text. Punca utama ialah keperluan MySQL untuk panjang kunci apabila menggunakan lajur BLOB atau TEXT dalam kekangan unik atau kunci utama.

Memahami Ralat

Ketidakupayaan MySQL untuk menguatkuasakan kekangan kunci unik dengan cekap pada lajur BLOB atau TEXT yang boleh ubah panjang tanpa panjang kunci yang ditentukan adalah isu teras. Ketiadaan panjang menjadikan pengesahan keunikan sukar untuk pangkalan data.

Menyelesaikan Ralat

Beberapa pendekatan boleh membetulkan perkara ini:

  • Alih keluar Lajur BLOB/TEKS daripada Kunci: Penyelesaian paling mudah, jika boleh, adalah untuk mengalih keluar lajur TEXT atau BLOB daripada kunci utama atau definisi indeks unik.

  • Gunakan VARCHAR: Pertimbangkan untuk menukar lajur TEXT atau BLOB kepada VARCHAR dan nyatakan panjang yang sesuai (sehingga 255 aksara). VARCHAR menawarkan prestasi yang lebih baik untuk kekangan utama.

  • Kunci Utama Alternatif: Jika tiada pilihan mengalih keluar atau menukar lajur, pilih medan lain sebagai kunci utama.

  • (Tidak Berkesan) ALTER TABLE dengan Panjang: Walaupun anda boleh cuba menggunakan ALTER TABLE dengan panjang kunci untuk TEXT atau BLOB lajur, ini tidak disokong oleh MySQL.

Nota Penting

  • Panjang VARCHAR: Kekalkan VARCHAR panjang lajur di bawah 256 aksara untuk menghalang penukaran automatik MySQL kepada SMALLTEXT, yang akan mencetuskan semula ralat.

  • Jenis Lajur Lain: Ralat ini tidak terhad kepada lajur TEXT dan BLOB. Semak semula bahawa panjang kunci untuk semua lajur ditentukan dengan betul, terutamanya memastikan panjang VARCHAR tidak melebihi 255.

Atas ialah kandungan terperinci Mengapa MySQL Melemparkan Ralat 'Lajur BLOB/TEXT dalam Spesifikasi Utama Tanpa Panjang', dan Bagaimana Saya Boleh Membetulkannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan