SORU
2 Aralık 2008, Salı


MySQL varchar eşdeğeri(max)?

MySQL varchar eşdeğeri(max) nedir?

CEVAP
2 Aralık 2008, Salı


Bir varchar max uzunluğu 64 KB olan MySQL max satır boyutunu, tabi (Lekeler hariç):

VARCHAR(65535)

Ancak, sınır multi-byte karakter kümesi kullanıyorsanız: daha düşük olduğunu unutmayın

VARCHAR(21844) CHARACTER SET utf8

İşte bazı örnekler:

Boyutu 65535, ama bir varchar en fazla satır da bir veya iki bayt belirli bir uzunlukta dize kodlamak için içerir. Aslında eğer tablo tek bir sütun değilse bile en büyük satır boyutunu bir varchar ilan edemez.

mysql> CREATE TABLE foo ( v VARCHAR(65534) );
ERROR 1118 (42000): Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. This includes storage overhead, check the manual. You have to change some columns to TEXT or BLOBs

Ama biz uzunlukları azalan çalışırsanız, çalışan en büyük uzunluğu bulalım:

mysql> CREATE TABLE foo ( v VARCHAR(65532) );
Query OK, 0 rows affected (0.01 sec)

Şimdi ise Tablo düzeyinde boş bir karakter kümesi kullanmak için çalışırsanız, birden çok bayt her karakter sayılır. UTF8 dizeleri yokmutlakadize başına birden çok bayt kullanır, ama MySQL tek baytlık karakterler için gelecekte bütün ekler kısıtlamak atarsın sanırım.

mysql> CREATE TABLE foo ( v VARCHAR(65532) ) CHARSET=utf8;
ERROR 1074 (42000): Column length too big for column 'v' (max = 21845); use BLOB or TEXT instead

Son hata söylediklerine rağmen, Orada hala 21845 uzunluğu sevmez.

mysql> CREATE TABLE foo ( v VARCHAR(21845) ) CHARSET=utf8;
ERROR 1118 (42000): Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. This includes storage overhead, check the manual. You have to change some columns to TEXT or BLOBs

Bu zaten işe yaramazdı olan 21845*3 = 65535, hesaplamak, eğer mükemmel mantıklı. İşler yapan 21844*3 = 65532, oysa.

mysql> CREATE TABLE foo ( v VARCHAR(21844) ) CHARSET=utf8;
Query OK, 0 rows affected (0.32 sec)

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • cyriak

    cyriak

    29 Mart 2006
  • Joe DiFeo

    Joe DiFeo

    7 AĞUSTOS 2012
  • Richard Laxa

    Richard Laxa

    30 AĞUSTOS 2012