Rumah > pangkalan data > tutorial mysql > Mengapa SQLite Melemparkan Ralat 'Jenis Lajur Kunci Tidak Sah untuk Indeks', dan Bagaimana Saya Boleh Membetulkannya?

Mengapa SQLite Melemparkan Ralat 'Jenis Lajur Kunci Tidak Sah untuk Indeks', dan Bagaimana Saya Boleh Membetulkannya?

Mary-Kate Olsen
Lepaskan: 2024-12-15 18:44:15
asal
117 orang telah melayarinya

Why Does SQLite Throw an

Ralat: Jenis Lajur Kunci Tidak Sah untuk Indeks

SQLite menghadapi ralat semasa mengindeks lajur dengan jenis data tertentu. Satu ralat sedemikian berlaku apabila cuba menggunakan lajur nvarchar(max) sebagai lajur utama dalam indeks, mengakibatkan mesej ralat:

Column 'key' in table 'misc_info' is of a type that is invalid for use as a key column in an index.
Salin selepas log masuk

Memahami Had

SQLite mengenakan had saiz maksimum pada kunci indeks, mengehadkan panjangnya kepada 450 aksara. Had ini timbul daripada kekangan 8000-bait setiap baris pada kekangan unik, yang merangkumi kedua-dua kunci dan mana-mana lajur diindeks tambahan.

Penyelesaian: Mengubah Suai Jenis Data Lajur Utama

Untuk menyelesaikan isu ini, anda boleh mengubah suai jenis data lajur kunci kepada saiz yang lebih kecil yang memenuhi had kunci indeks. Penyelesaian berikut menggunakan nvarchar(450), yang membenarkan panjang kunci maksimum 450 aksara:

create table [misc_info]
( 
    [id] INTEGER PRIMARY KEY IDENTITY NOT NULL, 
    [key] nvarchar(450) UNIQUE NOT NULL, 
    [value] nvarchar(max) NOT NULL
)
Salin selepas log masuk

Pertimbangan Alternatif

Jika menyimpan aksara bukan Unikod tidak penting, anda boleh mempertimbangkan untuk beralih kepada varchar bukannya nvarchar, yang meningkatkan panjang kunci maksimum kepada 900 aksara. Walau bagaimanapun, nvarchar lebih sesuai apabila berurusan dengan aksara daripada berbilang halaman kod.

Ingat bahawa pengehadan ini terpakai khusus untuk pengindeksan sebaris. Jika anda menggunakan kaedah pengindeksan luaran, seperti membuat indeks penutup pada jadual lain, had saiz lajur kunci mungkin berbeza.

Atas ialah kandungan terperinci Mengapa SQLite Melemparkan Ralat 'Jenis Lajur Kunci Tidak Sah untuk Indeks', 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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan