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

Genkend datatypen nvarchar i databasen

Du behøver ikke bekymre dig om nvarchar-meddelelsen, der blev genereret af phpmyadmin, ikke af MySQL. MySQL tillader nvarchar-datatype, se MySQL-manualen om nationale data tegnsæt :

Standard SQL definerer NCHAR eller NATIONAL CHAR som en måde at angive, at en CHAR-kolonne skal bruge et foruddefineret tegnsæt. MySQL brugersutf8 som dette foruddefinerede tegnsæt. For eksempel er disse datatypedeklarationer ækvivalente:

CHAR(10), CHARACTER SET utf8 NATIONAL CHARACTER(10), NCHAR(10)

Som er disse:

VARCHAR(10), CHARACTER SET utf8 NATIONAL VARCHAR(10), NVARCHAR(10),NCHAR VARCHAR(10), NATIONAL CHARACTER VARIING(10), NATIONAL CHARVARYING(10)

Det virkelige problem er nederst i fejlmeddelelsen:rækkestørrelsen er for stor. Denne fejlmeddelelse kommer fra MySQL, og det er den, du skal løse.

mysql bruger utf8 tegnsæt til nvarchar datatype. Et utf8-tegn i mysql bruger op til 3 bytes. Dine config_data felt er defineret som nvarchar(21844) , derfor kræver det op til 21844*3+2=65534 bytes.

Som fejlmeddelelsen siger, kan en række være op til 65535 byte lang, så du har 1 byte tilbage, men de andre felter skubber rækkestørrelsen over grænsen.

Hvad du kan gøre:

  1. Reducer config_data feltlængde, så den samlede rækkelængde passer ind i grænsen.
  2. Skift config_data datatype til varchar og brug et tegnsæt, der kræver færre bytes - bare sørg for, at tegnsættet understøtter alle de tegn, du har brug for.
  3. Skift config_data datatype til text fordi kun en lille del af et tekstfelts værdi er faktisk gemt i selve rækken. Dette er faktisk foreslået i selve fejlmeddelelsen.



  1. Hvordan indstiller man standardværdien, mens man indsætter null-værdi i ikke null-kolonnen SQL Server?

  2. Kan ikke oprette forbindelse til SQL Server Analysis Services, selvom det ser ud til at køre

  3. Sådan eksporteres fil i .dat- eller .txt-format ved hjælp af php

  4. Mysql Workbench Mac OS mangler administrationsværktøjer og dataimport/eksport