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

Gegevenstype nvarchar niet herkennen in database

U hoeft zich geen zorgen te maken over het nvarchar-bericht, dat is gegenereerd door phpmyadmin, niet door MySQL. MySQL staat nvarchar-gegevenstype toe, zie MySQL-handleiding op nationale gegevens tekenset :

Standaard SQL definieert NCHAR of NATIONAL CHAR als een manier om aan te geven dat een CHAR-kolom een ​​vooraf gedefinieerde tekenset moet gebruiken. MySQL gebruiktutf8 als deze vooraf gedefinieerde tekenset. Deze gegevenstypeverklaringen zijn bijvoorbeeld equivalent:

CHAR (10), TEKENSET utf8 NATIONAAL KARAKTER (10), NCHAR (10)

Zoals deze:

VARCHAR (10), KARAKTER SET utf8 NATIONAAL VARCHAR (10), NVARCHAR (10), NCHAR VARCHAR (10), NATIONAAL KARAKTER VARIANT (10), NATIONAAL CHARVARYING (10)

Het echte probleem staat onderaan de foutmelding:rijgrootte te groot. Deze foutmelding komt van MySQL en die moet je oplossen.

mysql gebruikt utf8-tekenset voor het gegevenstype nvarchar. Een utf8-teken in mysql gebruikt maximaal 3 bytes. Uw config_data veld is gedefinieerd als nvarchar(21844) , daarom vereist het tot 21844*3+2=65534 bytes.

Zoals de foutmelding zegt, kan een rij tot 65535 bytes lang zijn, dus je hebt nog 1 byte over, maar de andere velden duwen de rijgrootte boven de limiet.

Wat u kunt doen:

  1. Verminder config_data veldlengte zodat de totale rijlengte binnen de limiet past.
  2. Wijzig config_data datatype naar varchar en gebruik een tekenset die minder bytes nodig heeft - zorg er wel voor dat die tekenset alle tekens ondersteunt die je nodig hebt.
  3. Wijzig config_data gegevenstype naar text omdat slechts een klein deel van de waarde van een tekstveld daadwerkelijk in de rij zelf wordt opgeslagen. Dit wordt eigenlijk gesuggereerd in de foutmelding zelf.



  1. Waarom respecteert SSMS mijn standaard database-instellingen niet?

  2. Schema van resultatenset bekijken in SQL Server Management Studio

  3. phpMyAdmin #1062 - Dubbele invoer '' voor sleutel 'PRIMAIR'

  4. SSMS staat dubbele records in een tabel toe, maar geen latere updates