Skip to content
UBenzer
  • 🇩🇪 Berlin & Almanya
  • 🎮 Bilgisayar Oyunları
  • 💾 Programlama
  • 💻 Bilgisayar
  • 😂 Eğlence
  • ✈️ Gezi
  • 🧐 Kişisel
  • 🎈 Hayat
  • Hakkımda
  • Kimdir?
  • CV
  • İçindekiler
  • İletişim
Category 💻 Bilgisayar 💾 Programlama

MySQL Collation Değişimi

1 dakika Published 08 Mayıs 2010

Collation: Alfabetik sıralama.

Collation Seçimi: (Bizim örneğimizde) veritabanındaki bilgilerin, hangi sıralama algoritması kullanarak sıralama yapacağımızı ayarladığımız veritabanı metadatası.

MySQL’de collation, char, text, longtext gibi metin girilen sahaların hangi algoritmaya göre sıralanacağını belirler. Collation, metinleri tuttuğunuz karakter seti (charset) ve kullandığınız dile göre seçilmelidir.

Bugün fark ettiğim önemli bir problem, charset olarak utf8_general_ci seçildiğinde, Türkçe karakterlerin çengeli olmayan karakterler ile bir tutularak sıralanması idi.

Örneğin MySQL, bir sorgu yaptığımda sıralamayı aşağıdaki gibi yapıyordu:

  1. …
  2. Şaban
  3. Salih
  4. Sema
  5. Şeyda
  6. Şıh
  7. Sincap
  8. …

veya

  1. …
  2. Camış
  3. Çilek
  4. Cumhuriyet
  5. …

Kısacası, Ş ve S, Ç ve C, I ve İ aynı karakter olarak alınmaktaydı. Böyle bir problem ilk defa başıma geldi.

Çözüm bariz sırıtıyordu: Collation’u utf8_turkish_ci yapmak. Ama nasıl? Onlarca tablo, yüzlerce saha! Tek tek yapılır mı? Olacak şey değil.

Ben de kâh İnternet’ten araştırarak, kâh kendim kafa patlatarak, bir veritabanının tüm tablolarının ve tüm tabloların bütün sahalarının collationlarını değiştiren bir PHP-SQL scripti yazdım.

Acil durumda siz de yararlanabilirsiniz:

[rawr]

<?php

/* https://ubenzer.com */
$host = "localhost";
$user = "DB KULLANICI ADI";
$pass = "DB KULLANICI PAROLASI";
$database = "VERITABANI ADI";

$donusturulecek_collation = "utf8_turkish_ci";
$donusturulecek_charset   = "utf8";

$db = mysql_connect($host, $user, $pass);
if(!$db) {
	die("Baglanti hatasi.");
}
mysql_select_db($database);
$result = mysql_query('show tables');
while($tables = mysql_fetch_array($result)) {
	foreach ($tables as $key => $value) {
		mysql_query("ALTER TABLE $value COLLATE $donusturulecek_collation");
		mysql_query("ALTER TABLE $value CONVERT TO CHARACTER SET $donusturulecek_charset COLLATE $donusturulecek_collation");
	}
}
mysql_query("ALTER DATABASE $db DEFAULT CHARACTER SET $donusturulecek_charset COLLATE $donusturulecek_collation");

echo "Tamamdir yegenim. :)";
/* https://ubenzer.com */
?>

[/rawr]

👋 🚨 Yeni yazılardan haberdar olmak ister misiniz? 👇

Aboneliğinizi onaylamak için gelen veya istenmeyen posta kutunuzu kontrol edin.

Share with friends

Tags

metadatamysqlPHPSQLveritabanı

You might also like

Data & Metadata [The Simpsons Version]
Category 💻 Bilgisayar

Data & Metadata [The Simpsons Version]

1 dakika Published 21 Ağustos 2012
Windows’ta MySQL tablolarında büyük harf sorunu
Category 💻 Bilgisayar 💾 Programlama

Windows’ta MySQL tablolarında büyük harf sorunu

1 dakika Published 18 Mart 2012
JAVA üzerinden JDBC ile MySQL bağlantılarında Türkçe karakter sorunu
Category 💻 Bilgisayar 💾 Programlama

JAVA üzerinden JDBC ile MySQL bağlantılarında Türkçe karakter sorunu

1 dakika Published 25 Haziran 2011
Stajyer Öğrenci Arama Sistemi: Java Server Faces
Category 💻 Bilgisayar 💾 Programlama

Stajyer Öğrenci Arama Sistemi: Java Server Faces

2 dakika Published 07 Haziran 2011
Linus, fotoğraf çekilsek?
Category 💻 Bilgisayar 😂 Eğlence

Linus, fotoğraf çekilsek?

2 dakika Published 20 Şubat 2021
Harici monitör parlaklığı klavye ile nasıl değiştirilir?
Category 💻 Bilgisayar

Harici monitör parlaklığı klavye ile nasıl değiştirilir?

1 dakika Published 24 Ekim 2020

3 comments

  1. umut dedi ki:
    09 Temmuz 2010, 19.52

    tablolar hala değişmedi?

    Yanıtla
  2. Ahmet dedi ki:
    02 Ekim 2012, 10.30

    Kod Güzel İşe Yarıyor Uzun Araştırma Yaptım Tek Sorun Var
    Oda $db Değişkeninin İki Yerde Farklı Değerlerle Kullanılmaya Çalışılması
    Sorunu Çözmek İse Çok Basit

    $db = "DATABASE"; yerine $database = "DATABASE";
    Yaparsanız ve mysql_select_db($db); Yerine mysql_select_db($database); Yaparsanız Sorunsuz Çalışacaktır.

    Hazırlayan Arkadaşa Gerçekten Teşekkür Ederim…

    Yanıtla
    • Umut dedi ki:
      03 Ekim 2012, 13.55

      Büyük dikkatsizlik olmuş. Uyarınız için teşekkürler, kodda gerekli düzeltmeyi yapıyorum.

      Yanıtla

Bir yanıt yazın Yanıtı iptal et

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Category 🎈 Hayat

‘de, da’ eki nasıl yazılır?

1 dakika Published 01 Mart 2008
Almanya’da nasıl ehliyet aldım?
Category 🎈 Hayat 🧐 Kişisel 🇩🇪 Berlin & Almanya

Almanya’da nasıl ehliyet aldım?

10 dakika Published 18 Kasım 2020
Yamyamlar & Misyonerler
Category 💻 Bilgisayar 💾 Programlama

Yamyamlar & Misyonerler

1 dakika Published 22 Temmuz 2012
Almanya’dan kalıcı oturuma izni (niederlassungserlaubnis) nasıl alınır?
Category 🇩🇪 Berlin & Almanya

Almanya’dan kalıcı oturuma izni (niederlassungserlaubnis) nasıl alınır?

5 dakika Published 12 Ocak 2020
Almanya’da nasıl ehliyet aldım?
Category 🎈 Hayat 🧐 Kişisel 🇩🇪 Berlin & Almanya

Almanya’da nasıl ehliyet aldım?

10 dakika Published 18 Kasım 2020
Bir şirket neden uzaktan çalışmaya (remote working) izin verir?
Category 🎈 Hayat

Bir şirket neden uzaktan çalışmaya (remote working) izin verir?

2 dakika Published 18 Mart 2019
-de -da eki ne zaman ayrı yazılır?
Category 🎈 Hayat

-de -da eki ne zaman ayrı yazılır?

1 dakika Published 21 Şubat 2019
Almanya’ya gelmek için yapılan bürokratik işlemler
Category 🧐 Kişisel 🇩🇪 Berlin & Almanya

Almanya’ya gelmek için yapılan bürokratik işlemler

6 dakika Published 08 Eylül 2017
  • Ana Sayfa
  • Kimdir?
  • CV
  • Kullanma Şartları
  • İletişim
  • İçindekiler

© 2026 Umut Benzer