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

Unbekannter Datentyp nvarchar in der Datenbank

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:

  1. Reduzieren Sie config_data Feldlänge, damit die gesamte Zeilenlänge in das Limit passt.
  2. Ä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.
  3. Ändern Sie config_data Datentyp zu text 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.