sql >> Databasteknik >  >> RDS >> Mysql

MySQL VARCHAR Lengths och UTF-8

Det här svaret dök upp överst i mina sökresultat på Google men var inte korrekt så:

Förvirringen beror förmodligen på att olika versioner av mysql testas.

  • Version 4 räknar byte
  • Version 5 räknar tecken

http://dev.mysql.com/doc /refman/5.0/en/string-type-overview.html

MySQL tolkar längdspecifikationer i teckenkolumndefinitioner i teckenenheter. (Före MySQL 4.1 tolkades kolumnlängder i byte.) Detta gäller CHAR, VARCHAR och TEXT-typerna.

Intressant nog (jag hade inte tänkt på det) maxlängden för en varchar-kolumn påverkas av utf8 enligt följande:

Den effektiva maximala längden för en VARCHAR i MySQL 5.0.3 och senare är beroende av den maximala radstorleken (65 535 byte, som delas mellan alla kolumner) och teckenuppsättningen som används. Till exempel kan utf8-tecken kräva upp till tre byte per tecken, så en VARCHAR-kolumn som använder utf8-teckenuppsättningen kan deklareras som maximalt 21 844 tecken.



  1. Fel i utvecklingen på Heroku

  2. PostgreSQL inkrementell säkerhetskopiering och punkt-i-tid-återställning

  3. Skillnaden mellan SELECT INTO och INSERT INTO i MySQL

  4. Postgres unika begränsning vs index