Doküman menüsü

Sürüm 3.0.0

Karakter Setleri

Karakter seti desteği: Desteklenen ve reddedilen karakter setleri ve oturum karakter seti kuralları.

GoArchive tüm metin değerlerini bir utf8mb4 oturumu üzerinden okur ve yazar. Bazı karakter setleri utf8mb4 biçimine ve bu biçimden birebir dönüştürülemez: İki karakter tek bir karakter olarak okunabilir veya bir karakter ? olarak okunabilir. Bu nedenle GoArchive, kolonlarında bu tür bir karakter seti kullanılan görevi, herhangi bir satır okunmadan önce reddeder.

Oturum Karakter Seti

Her bağlantı, kimlik doğrulamanın (authentication) ardından utf8mb4 karakter setine ve utf8mb4_general_ci karşılaştırma kuralına (collation) ayarlanır. Böylece sunucudaki init_connect ayarı bu karakter setini daraltamaz. Ardından her kaynak ve hedef bağlantısı, açıldığı anda oturum ayarlarını doğrular (SESSION_CHARSET_CHECK ). Görevin where koşulundaki karşılaştırmalar ve GoArchive’ın anahtar SQL sorguları bu karşılaştırma kuralını kullanır.

Kolonlar Denetlenir

Ön kontroller, herhangi bir satır okunmadan önce, çalıştırmanın metin olarak okuduğu veya yazdığı ve karakter seti desteklenmeyen her görev kolonunu reddeder (COLUMN_CHARSET_CHECK ):

Görev TürüDenetlenen Kolonlar
archive, copy-onlyKaynaktaki her görev tablosunun tüm kolonları ve hedefte aynı adı taşıyan her kolon
purgeKaynakta, her görev tablosunun birincil anahtar ve foreign_key kolonları

ENUM ve SET kolonları denetlenir. Sayılar, zamansal tipler, ikili dizeler (binary strings) ve JSON bir karakter setine sahip olmadığı için denetlenmez. Bu denetimi atlamanın hiçbir yolu yoktur: Karakter seti uyuşmazlığından doğacak veri kaybı sessizce gerçekleşeceği ve sonradan tespit edilemeyeceği için, ön kontroller atlandığında (bypass) dahi bu iki denetim zorunlu olarak uygulanır.

Desteklenen Karakter Setleri

Karakter SetiNot
utf8mb4Oturumun kendi karakter seti
utf8mb3
ascii0x80–0xFF baytları depolanamaz; bu nedenle bu baytların hiçbiri çalıştırmaya ulaşmaz
latin1
latin2
latin5
latin7
cp850
cp852
cp866
keybcs2
koi8r
koi8u
macce
macroman
utf16Vekil çiftler (surrogate pairs) dahil tüm Unicode karakterleri
utf16leVekil çiftler (surrogate pairs) dahil tüm Unicode karakterleri
utf32Tüm Unicode karakterleri
binaryListenin eksiksiz olması için yer alır: İkili bir dizenin karakter seti yoktur

Reddedilen Karakter Setleri

Diğer tüm karakter setleri reddedilir:

Karakter SetiReddedilme Nedeni
sjisİki karakter tek bir karakter olarak okunur; bazı kodlar ? olarak okunur
cp932İki karakter tek bir karakter olarak okunur (yinelenen NEC ve IBM karakterleri); bazı kodlar ? olarak okunur
eucjpmsİki karakter tek bir karakter olarak okunur (yinelenen NEC ve IBM karakterleri); bazı kodlar ? olarak okunur
ujisİki karakter tek bir karakter olarak okunur (tam genişlikli ters eğik çizgi ve tilde); bazı kodlar ? olarak okunur
armscii8Altı noktalama baytı, ASCII’deki benzerleri olarak okunur
tis620Bazı kodlar U+FFFD olarak okunur
big5Bazı kodlar ? veya U+FFFD olarak okunur
euckrBazı kodlar ? olarak okunur
gb2312Bazı kodlar ? olarak okunur
gbkBazı kodlar ? olarak okunur
gb18030Bazı kodlar ? olarak okunur
cp1250Karşılığı olmayan baytlar ? olarak okunur
cp1251Karşılığı olmayan baytlar ? olarak okunur
cp1256Karşılığı olmayan baytlar ? olarak okunur
cp1257Karşılığı olmayan baytlar ? olarak okunur
dec8Karşılığı olmayan baytlar ? olarak okunur
geostd8Karşılığı olmayan baytlar ? olarak okunur
greekKarşılığı olmayan baytlar ? olarak okunur
hebrewKarşılığı olmayan baytlar ? olarak okunur
hp8Karşılığı olmayan baytlar ? olarak okunur
swe7Karşılığı olmayan baytlar ? olarak okunur
ucs2Tekil vekil karakterler (lone surrogates), geçerli UTF-8 olmayan ve sorgu parametresi olarak geri bağlanamayan (cannot be bound back) baytlar şeklinde okunur

Doğrulamadan geçmeyen bir kolonu her iki sunucuda da utf8mb4 karakter setine dönüştürün veya tablosunu görevin dışında bırakın.