Anda tidak perlu khawatir tentang pesan nvarchar, yang dibuat oleh phpmyadmin, bukan oleh MySQL. MySQL mengizinkan tipe data nvarchar, lihat manual MySQL di data nasional kumpulan karakter :
Standar SQL mendefinisikan NCHAR atau NATIONAL CHAR sebagai cara untuk menunjukkan bahwa kolom CHAR harus menggunakan beberapa set karakter yang telah ditentukan. MySQL menggunakanutf8 sebagai set karakter yang telah ditentukan ini. Misalnya, deklarasi tipe data ini setara:
CHAR(10), KARAKTER SET utf8 KARAKTER NASIONAL(10), NCHAR(10)
Seperti ini:
VARCHAR(10), SET KARAKTER utf8 VARCHAR NASIONAL(10), NVARCHAR(10),NCHAR VARCHAR(10), VARIASI KARAKTER NASIONAL(10), CHARVARYING NASIONAL(10)
Masalah sebenarnya ada di bagian bawah pesan kesalahan:ukuran baris terlalu besar. Pesan kesalahan ini berasal dari MySQL dan itulah yang perlu Anda pecahkan.
mysql menggunakan set karakter utf8 untuk tipe data nvarchar. Karakter utf8 di mysql menggunakan hingga 3 byte. config_data
. Anda bidang didefinisikan sebagai nvarchar(21844)
, oleh karena itu dibutuhkan hingga 21844*3+2=65534 byte.
Seperti yang dikatakan pesan kesalahan, panjang satu baris dapat mencapai 65535 byte, jadi Anda memiliki sisa 1 byte, tetapi bidang lain mendorong ukuran baris di atas batas.
Yang dapat Anda lakukan:
- Kurangi
config_data
panjang bidang sehingga panjang baris keseluruhan sesuai dengan batas. - Ubah
config_data
tipe data ke varchar dan gunakan kumpulan karakter yang membutuhkan lebih sedikit byte - pastikan kumpulan karakter mendukung semua karakter yang Anda butuhkan. - Ubah
config_data
tipe data menjaditext
karena hanya sebagian kecil dari nilai bidang teks yang sebenarnya disimpan di baris itu sendiri. Ini sebenarnya disarankan dalam pesan kesalahan itu sendiri.