Rumah > Soal Jawab > teks badan
Saya menggunakan MySQL 8.0 dan cuba menyimpan URL dalam lajur. Setiap kali saya cuba memasukkan URL yang lebih panjang daripada 191 aksara, saya mendapat ralat berikut:
1406 Data too long for column 'url' at row 1
Jenis data lajur ialah VARCHAR(1000) dan URL adalah lebih kurang 450 aksara. Saya telah cuba memasukkan rentetan lain dan apa-apa sahaja di bawah 191 aksara, dan apa-apa di bawah 191 aksara berfungsi dengan baik, tetapi tiada yang melebihi 191 aksara.
Saya cuba menukar jenis data lajur ini kepada format rentetan lain seperti TEXT, LONGTEXT dan BLOB. Saya juga cuba memasukkan rentetan lebih panjang daripada 191 aksara dalam jadual lain dan ia juga terhad kepada 191 aksara.
Saya tahu bahawa utf8mb4 menghasilkan VARCHAR(255) yang sebenarnya 191, tetapi bukankah saya patut mengatasinya dengan VARCHAR(1000)? Adakah terdapat tetapan dalam pangkalan data yang boleh menyebabkan isu ini?
P粉0025464902024-03-29 09:53:03
Diambil dari di sini:
On a database that uses a utf8mb collation, each character takes 4 bytes. On innodb, indexes (the prefixes to be exact) can contain up to 767 bytes. So, the max indexable length on utf8mb + innodb is 767/4=191 characters.
Jadi lebih baik anda gunakan format TEXT
untuk URL anda.
Kemas kini:
Menurut jawapan ini, masalahnya adalah dengan set watak, apabila perlu utf8
时,它是utf8mb4
, disusun sama.