Sie müssen sich keine Sorgen um die nvarchar-Nachricht machen, die von phpmyadmin generiert wurde, nicht von MySQL. MySQL erlaubt den Datentyp nvarchar, siehe MySQL-Handbuch zu national data Zeichensatz :
Standard-SQL definiert NCHAR oder NATIONAL CHAR, um anzugeben, dass eine CHAR-Spalte einen vordefinierten Zeichensatz verwenden soll. MySQL verwendet utf8 als diesen vordefinierten Zeichensatz. Beispielsweise sind diese Datentypdeklarationen äquivalent:
CHAR(10), ZEICHENSATZ utf8 NATIONAL CHARACTER(10), NCHAR(10)
So wie diese:
VARCHAR(10), ZEICHENSATZ utf8 NATIONAL VARCHAR(10), NVARCHAR(10),NCHAR VARCHAR(10), NATIONAL CHARACTER VARYING(10), NATIONAL CHARVARYING(10)
Das eigentliche Problem liegt am Ende der Fehlermeldung:Zeilengröße zu groß. Diese Fehlermeldung kommt von MySQL und das ist die, die Sie lösen müssen.
mysql verwendet den utf8-Zeichensatz für den Datentyp nvarchar. Ein utf8-Zeichen in mysql verwendet bis zu 3 Bytes. Ihre config_data Feld ist definiert als nvarchar(21844) , benötigt also bis zu 21844*3+2=65534 Bytes.
Wie die Fehlermeldung sagt, kann eine Zeile bis zu 65535 Byte lang sein, Sie haben also noch 1 Byte übrig, aber die anderen Felder erhöhen die Zeilengröße über das Limit.
Was Sie tun können:
- Reduzieren Sie
config_dataFeldlänge, damit die gesamte Zeilenlänge in das Limit passt. - Ändern Sie
config_dataDatentyp in varchar und verwenden Sie einen Zeichensatz, der weniger Bytes benötigt - stellen Sie einfach sicher, dass dieser Zeichensatz alle benötigten Zeichen unterstützt. - Ändern Sie
config_dataDatentyp zutextda nur ein kleiner Teil des Wertes eines Textfeldes tatsächlich in der Zeile selbst gespeichert wird. Dies wird tatsächlich in der Fehlermeldung selbst vorgeschlagen.