phpMyAdmin
 sql >> Database >  >> Database Tools >> phpMyAdmin

Non riconoscere il tipo di dati nvarchar nel database

Non devi preoccuparti del messaggio nvarchar, che è stato generato da phpmyadmin, non da MySQL. MySQL consente il tipo di dati nvarchar, vedere il manuale MySQL su dati nazionali set di caratteri :

L'SQL standard definisce NCHAR o NATIONAL CHAR come un modo per indicare che una colonna CHAR deve utilizzare un set di caratteri predefinito. MySQL usautf8 come questo set di caratteri predefinito. Ad esempio, queste dichiarazioni di tipo di dati sono equivalenti:

CHAR(10), SET DI CARATTERI utf8 PERSONAGGIO NAZIONALE(10), NCHAR(10)

Come sono questi:

VARCHAR(10), SET DI CARATTERI utf8 NATIONAL VARCHAR(10), NVARCHAR(10),NCHAR VARCHAR(10), NATIONAL CHARACTER VARYING(10), NATIONAL CHARVARYING(10)

Il vero problema è in fondo al messaggio di errore:dimensione della riga troppo grande. Questo messaggio di errore proviene da MySQL ed è quello che devi risolvere.

mysql utilizza il set di caratteri utf8 per il tipo di dati nvarchar. Un carattere utf8 in mysql utilizza fino a 3 byte. I tuoi config_data il campo è definito come nvarchar(21844) , quindi richiede fino a 21844*3+2=65534 byte.

Come dice il messaggio di errore, una riga può essere lunga fino a 65535 byte, quindi hai 1 byte rimasto, ma gli altri campi spingono la dimensione della riga sopra il limite.

Cosa puoi fare:

  1. Riduci config_data la lunghezza del campo in modo che la lunghezza complessiva della riga rientri nel limite.
  2. Cambia config_data tipo di dati su varchar e usa un set di caratteri che richiede meno byte:assicurati solo che il set di caratteri supporti tutti i caratteri di cui hai bisogno.
  3. Cambia config_data tipo di dati in text perché solo una piccola parte del valore di un campo di testo viene effettivamente memorizzata nella riga stessa. Questo è effettivamente suggerito nel messaggio di errore stesso.