Jawaban yang diterima salah (atau setidaknya cukup berargumentasi) - Saya pribadi tidak ingin data disimpan di luar database saya, karena akan menimbulkan komplikasi dalam hal prosedur pencadangan dan kueri transaksional.
Seperti yang telah ditunjukkan orang lain, manual berulang kali menyatakan bahwa kolom BLOB dan TEXT tidak dihitung terhadap ukuran baris total, tetapi sayangnya, dengan pengaturan konfigurasi default, itu tidak benar, dan Anda akhirnya mendapatkan pesan kesalahan ini. (Pesan kesalahan tidak masuk akal, karena meminta Anda menggunakan TEXT alih-alih VARCHAR untuk mengatasi masalah - yang sudah Anda lakukan.)
Alasan pembatasan ini adalah mekanisme penyimpanan default, Antelope , yang menyimpan 768 byte pertama kolom panjang variabel dalam baris - dan solusi yang mungkin adalah menggunakan INNODB dan mengalihkan mekanisme penyimpanan Anda ke Barracuda mekanisme penyimpanan:
SET GLOBAL innodb_file_format=Barracuda;
Ini tidak akan langsung berpengaruh, karena pengaturan ini adalah default untuk file database baru - jadi Anda harus menghapus dan membuat ulang seluruh database Anda.
Atau, beralih ke Barracuda (seperti di atas) dan kemudian (sebagai tambahan) beralih ke strategi file-per-tabel:
SET GLOBAL innodb_file_per_table=ON;
Sekali lagi, ini tidak akan langsung berpengaruh, karena kedua pengaturan adalah default untuk tabel baru - jadi sekali lagi, Anda harus menghapus dan membuat ulang tabel.
Jika Anda melihat di folder data MySQL setelah melakukan ini, Anda dapat mengonfirmasi bahwa file terpisah telah dibuat, mis. untuk database bernama "data", dan tabel bernama "test", Anda akan melihat file bernama "data/test/bigtable.ibd".
Jika Anda tidak suka mengubah pengaturan global di MySQL, coba SET SESSION
alih-alih SET GLOBAL
, misalnya segera sebelum menjalankan CREATE TABLE
pernyataan.