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

MySQL Collation Değişimi

1 dakika 08 Mayıs 2010

logo mysqlCollation: 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.

Arkadaşlarınızla Paylaşın
Etiketler
metadatamysqlPHPSQLveritabanı

Bunlar da ilginizi çekebilir

simpsons metadata
💻 Bilgisayar

Data & Metadata [The Simpsons Version]

1 dakika 21 Ağustos 2012
logo mysql
💻 Bilgisayar, 💾 Programlama

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

1 dakika 18 Mart 2012
jdbc java mysql utf8
💻 Bilgisayar, 💾 Programlama

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

1 dakika 25 Haziran 2011
Java sstProje2srccomubenzersstproje2beansSirketBeanjava Eclipse
💻 Bilgisayar, 💾 Programlama

Stajyer Öğrenci Arama Sistemi: Java Server Faces

2 dakika 07 Haziran 2011
linus tech tips youtube channel
😂 Eğlence, 💻 Bilgisayar

Linus, fotoğraf çekilsek?

2 dakika 20 Şubat 2021
monitor control macos screenshot 2
💻 Bilgisayar

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

1 dakika 24 Ekim 2020

MySQL Collation Değişimi 3 yorum aldı.

  1. umut dedi ki:
    09 Temmuz 2010, 19.52

    tablolar hala değişmedi?

    Cevap yaz
  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…

    Cevap yaz
    1. 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.

      Cevap yaz

Bir cevap yazın Cevabı iptal et

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

almanya ehliyet almak degistirme berlin scaled
🇩🇪 Berlin & Almanya, 🎈 Hayat, 🧐 Kişisel

Almanya’da nasıl ehliyet aldım?

10 dakika 18 Kasım 2020
monitor control macos screenshot 2
💻 Bilgisayar

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

1 dakika 24 Ekim 2020
🎈 Hayat

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

1 dakika 01 Mart 2008
Niederlassungserlaubnis
🇩🇪 Berlin & Almanya

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

5 dakika 12 Ocak 2020
almanya ehliyet almak degistirme berlin scaled
🇩🇪 Berlin & Almanya, 🎈 Hayat, 🧐 Kişisel

Almanya’da nasıl ehliyet aldım?

10 dakika 18 Kasım 2020
auth0 offsite
🎈 Hayat

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

2 dakika 18 Mart 2019
de de nasil yazilir
🎈 Hayat

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

1 dakika 21 Şubat 2019
kudamm
🧐 Kişisel, 🇩🇪 Berlin & Almanya

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

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