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_data
Feldlänge, damit die gesamte Zeilenlänge in das Limit passt. - Ändern Sie
config_data
Datentyp 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_data
Datentyp zutext
da 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.