


Mengapa Saya Mendapat Ralat MySQL #1071: Kunci Yang Ditentukan Terlalu Panjang?
Ralat MySQL #1071: Memahami Had Panjang Utama
Apabila cuba menambah indeks unik pada jadual dengan lajur tertentu (lajur1 dan lajur2 ), pengguna mungkin menghadapi ralat berikut:
#1071 - Specified key was too long; max key length is 767 bytes
Semasa ia pada mulanya kelihatan bahawa panjang gabungan lajur1 (20) dan lajur2 (500) berada dalam panjang kunci maksimum 767 bait, penjelasan sebenar terletak pada pemahaman had pengindeksan awalan MySQL.
Dalam versi MySQL sebelum 5.7, Jadual InnoDB mempunyai had indeks awalan sebanyak 767 bait, manakala jadual MyISAM mempunyai had yang lebih besar iaitu 1,000 bait. Ini bermakna bilangan bait maksimum yang digunakan oleh indeks adalah berdasarkan bahagian permulaan lajur yang disertakan dalam indeks.
Dalam contoh yang diberikan, kedua-dua lajur1 dan lajur2 ialah lajur VARCHAR(x) , yang menyimpan rentetan panjang berubah-ubah. Ralat berlaku kerana MySQL menganggap keseluruhan panjang lajur sebagai sebahagian daripada indeks, bukan hanya data sebenar yang disimpan. Akibatnya, walaupun data sebenar dalam lajur1 dan lajur2 lebih pendek daripada jumlah panjang yang diperuntukkan, saiz indeks melebihi had maksimum.
Untuk mengelakkan ralat ini, pengguna mempunyai beberapa pilihan:
- Hadkan panjang lajur VARCHAR: Menetapkan had yang lebih rendah pada panjang VARCHAR memastikan saiz indeks kekal di bawah maksimum.
- Indeks hanya sebahagian daripada lajur: Nyatakan hanya subset bagi setiap aksara lajur dalam definisi indeks, seperti lajur1(15) dan lajur2(200). Ini mengurangkan jumlah saiz indeks dan membolehkan indeks dibuat.
- Pertimbangkan untuk menyemak model data: Terokai cara alternatif untuk melaksanakan peraturan perniagaan tanpa melebihi had panjang utama. Ini mungkin melibatkan pembahagian data kepada berbilang lajur atau memperkenalkan jadual tambahan.
Memahami kesan panjang lajur pada saiz indeks adalah penting untuk mengelakkan ralat panjang kunci MySQL. Dengan mengurus saiz lajur dan definisi indeks dengan teliti, pengguna boleh melaksanakan indeks dengan jayanya dan mengekalkan integriti data tanpa melebihi had pangkalan data.
Atas ialah kandungan terperinci Mengapa Saya Mendapat Ralat MySQL #1071: Kunci Yang Ditentukan Terlalu Panjang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Mysqldiffersfromothersqldialectsyntaxforlimit, auto-increment, stringcomparison, subqueries, andperformanceanalysis.1) mySqlusSlimit, whilesqlserverestopandoracleusesusesrownum.2)

Pemisahan MySQL meningkatkan prestasi dan memudahkan penyelenggaraan. 1) Bahagikan jadual besar ke dalam kepingan kecil dengan kriteria tertentu (seperti julat tarikh), 2) secara fizikal membahagikan data ke dalam fail bebas, 3) MystQL boleh memberi tumpuan kepada partisi yang berkaitan apabila pertanyaan, 4) Pengoptimal pertanyaan boleh melangkau partisi yang tidak berkaitan, 5) Memilih strategi partisi yang tepat dan mengekalkannya secara tetap adalah kunci.

Bagaimana untuk memberikan dan membatalkan keizinan di MySQL? 1. Gunakan pernyataan geran untuk memberikan kebenaran, seperti GrantallPrivileGeSondatabase_name.to'username'@'host '; 2. Gunakan pernyataan membatalkan untuk membatalkan kebenaran, seperti RevokeAllPrivileGeSondatabase_name.from'username'@'host 'untuk memastikan komunikasi tepat pada masanya perubahan kebenaran.

InnoDB sesuai untuk aplikasi yang memerlukan sokongan transaksi dan kesesuaian yang tinggi, sementara myisam sesuai untuk aplikasi yang memerlukan lebih banyak bacaan dan kurang menulis. 1.InnoDB menyokong kunci transaksi dan peringkat bank, sesuai untuk sistem e-dagang dan perbankan. 2.Myisam menyediakan bacaan dan pengindeksan yang cepat, sesuai untuk sistem pengurusan blog dan kandungan.

Terdapat empat jenis utama dalam MySQL: innerjoin, leftjoin, rightjoin dan fullouterjoin. 1.InnerJoin Mengembalikan semua baris dalam dua jadual yang memenuhi syarat gabungan. 2.LeftJoin Mengembalikan semua baris di meja kiri, walaupun tidak ada baris yang sepadan di meja yang betul. 3. Rightjoin bertentangan dengan leftjoin dan mengembalikan semua baris di meja kanan. 4.FullouterJoin Mengembalikan semua baris dalam dua jadual yang memenuhi atau tidak memenuhi syarat gabungan.

MysqloffersvariousstorageEngines, eachSuitedfordifferentusecases: 1) innodbisidealforapplicationsNeedingacidcomplianceandhighconcurrency, supportingtransactionsandforeignkeys.2) myisamisbestforread-heavyworkloads, lacktransactive.2)

Kelemahan keselamatan biasa dalam MySQL termasuk suntikan SQL, kata laluan yang lemah, konfigurasi kebenaran yang tidak betul, dan perisian yang tidak dimulakan. 1. Suntikan SQL boleh dicegah dengan menggunakan pernyataan pra -proses. 2. Kata laluan yang lemah boleh dielakkan dengan secara paksa menggunakan strategi kata laluan yang kuat. 3. 4. Perisian yang tidak ditetapkan boleh ditampal dengan kerap memeriksa dan mengemas kini versi MySQL.

Mengenal pasti pertanyaan perlahan dalam MySQL boleh dicapai dengan membolehkan log pertanyaan perlahan dan menetapkan ambang. 1. Dayakan log pertanyaan perlahan dan tetapkan ambang. 2. Lihat dan menganalisis fail log pertanyaan perlahan, dan gunakan alat seperti mysqldumpslow atau pt-que-digest untuk analisis mendalam. 3. Mengoptimumkan pertanyaan perlahan dapat dicapai melalui pengoptimuman indeks, penulisan pertanyaan dan mengelakkan penggunaan pilih*.


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Muat turun versi mac editor Atom
Editor sumber terbuka yang paling popular

SecLists
SecLists ialah rakan penguji keselamatan muktamad. Ia ialah koleksi pelbagai jenis senarai yang kerap digunakan semasa penilaian keselamatan, semuanya di satu tempat. SecLists membantu menjadikan ujian keselamatan lebih cekap dan produktif dengan menyediakan semua senarai yang mungkin diperlukan oleh penguji keselamatan dengan mudah. Jenis senarai termasuk nama pengguna, kata laluan, URL, muatan kabur, corak data sensitif, cangkerang web dan banyak lagi. Penguji hanya boleh menarik repositori ini ke mesin ujian baharu dan dia akan mempunyai akses kepada setiap jenis senarai yang dia perlukan.

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

DVWA
Damn Vulnerable Web App (DVWA) ialah aplikasi web PHP/MySQL yang sangat terdedah. Matlamat utamanya adalah untuk menjadi bantuan bagi profesional keselamatan untuk menguji kemahiran dan alatan mereka dalam persekitaran undang-undang, untuk membantu pembangun web lebih memahami proses mengamankan aplikasi web, dan untuk membantu guru/pelajar mengajar/belajar dalam persekitaran bilik darjah Aplikasi web keselamatan. Matlamat DVWA adalah untuk mempraktikkan beberapa kelemahan web yang paling biasa melalui antara muka yang mudah dan mudah, dengan pelbagai tahap kesukaran. Sila ambil perhatian bahawa perisian ini
