2017-05-05 4 views
1

Ich habe versucht, MySQL Server-Daten in PHPMyAdmin MySQL-Datenbank zu importieren. Unbekannter Datentyp "nvarchar" gefunden. Meine Datenbanksortierung wurde auf "utf_general_ci" festgelegt.Unbekannten Datentyp Nvarchar in der Datenbank

enter image description here

+0

Welcher Zeichensatz ist vorhanden? –

Antwort

0

Sie müssen über die nvarchar Nachricht keine Sorge, das war von phpMyAdmin erzeugen, nicht von MySQL. MySQL tut Nvarchar Datentypen erlauben, finden Sie MySQL-Handbuch auf national data character set:

Standard-SQL NCHAR oder NATIONAL CHAR als eine Möglichkeit, dass sollte eine CHAR-Spalte einige vordefinierte Zeichensatz verwenden, um anzuzeigen, definiert. MySQL verwendet utf8 als diesen vordefinierten Zeichensatz. Zum Beispiel sind diese Datentyp Erklärungen äquivalent:

CHAR (10), Zeichensatz Utf8 NATIONAL CHARACTER (10), NCHAR- (10)

Als sind diese:

VARCHAR (10), Zeichensatz Utf8 NATIONAL VARCHAR (10), NVARCHAR (10), NCHAR- VARCHAR (10), NATIONAL CHARACTER Unterschiedlich (10), NATIONAL CHAR VARYING (10)

das eigentliche Problem ist am unteren 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. Ihr config_data-Feld ist als nvarchar(21844) definiert, daher sind bis zu 21844 * 3 + 2 = 65534 Byte erforderlich.

Wie die Fehlermeldung sagt, kann eine Zeile bis zu 65535 Bytes lang sein, so dass Sie noch 1 Byte haben, aber die anderen Felder drücken die Zeilengröße über das Limit.

Was Sie tun können:

  1. reduzieren config_data Feldlänge, so dass die Gesamtzeilenlänge in die Begrenzung passt.
  2. Ändern Sie config_data Datentyp in Varchar und verwenden Sie einen Zeichensatz, der weniger Bytes benötigt - stellen Sie nur sicher, dass der Zeichensatz alle Zeichen unterstützt, die Sie benötigen.
  3. Ändern Sie den config_data Datentyp in text, da nur ein kleiner Teil des Textfeldwerts tatsächlich in der Zeile selbst gespeichert ist. Dies wird in der Fehlermeldung selbst vorgeschlagen.
Verwandte Themen