Menyelesaikan masalah "Mysql::Ralat: Kunci yang ditentukan terlalu panjang; panjang kunci maks ialah 1000 bait"
Apabila cuba menjalankan perkara berikut arahan:
script/generate acts_as_taggable_on_migration rake db:migrate
anda mungkin menghadapi ralat:
Mysql::Error: Specified key was too long; max key length is 1000 bytes: CREATE INDEX `index_taggings_on_taggable_id_and_taggable_type_and_context` ON `taggings` (`taggable_id`, `taggable_type`, `context`)
Punca
Ralat ini berlaku disebabkan oleh sekatan yang dikenakan oleh enjin storan MySQL pada saiz indeks. Enjin MyISAM, yang biasa digunakan dengan Ruby on Rails, menghadkan saiz indeks kepada 1,000 bait.
Penyelesaian
Untuk menyelesaikan isu ini, pertimbangkan strategi berikut:
CREATE INDEX example_idx_id ON YOUR_TABLE(taggable_id) CREATE INDEX example_idx_type ON YOUR_TABLE(taggable_type)
Konfigurasi Tambahan
Seperti yang ditunjukkan oleh tetapan pengekodan pangkalan data anda, pangkalan data anda adalah dikonfigurasikan untuk menggunakan pengekodan aksara latin1. Ini mungkin mengehadkan keberkesanan indeks pada lajur menggunakan pengekodan UTF-8. Untuk meningkatkan prestasi indeks, pertimbangkan untuk menukar pangkalan data anda kepada pengekodan UTF-8.
Atas ialah kandungan terperinci Cara Menyelesaikan Ralat MySQL: 'Kunci yang ditentukan terlalu panjang; panjang kunci maksimum ialah 1000 bait'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!