MySQL Server da varsayılan karakter setinin ayarı

'Php' forumunda TosunPASA tarafından 12 Aralık 2018 tarihinde açılan konu

  1. TosunPASA

    TosunPASA Active Member

    Katılım:
    30 Mayıs 2015
    Mesaj:
    174
    Beğeniler:
    54
    Ödül Puanları:
    28
    Şehir:
    Belirtilmemiş
    Merhaba linux severler

    php ile çalışıyor isek bir şekilde database kullanırız ve php ile ilk akla gelen veri tabanı yönetim sistemi mysql dir. hatta linux ile de anılır.
    mysql server ın çok gelişmiş versiyonları ücretli olmak ile birlikte; bizim kullandığımız veya kullanacağımız serileri ücretsiz kısma giriyor ve localhost diye tabir ettiğimiz windows altında xampp gibi yazılımlar kullanıyoruz.

    ben yeni db ler oluşturuyor iken sürekli tablo adının yanına, o tabloda kullanmak istediğim karakter setini seçmek ile uğraşıyordum.. combobox içinde dolaş dur.
    her gelişmiş yazılımların bir ini dosyası olur ve bu dosya içinden çalışmaya başlarken değerler, tanımlara göre yüklenir.
    ve araştırdım buldum. sizler ile de paylaşıyorum

    xampp programımızı açtığımızda apache ve mysql i çalıştırmadan önce....
    panelin en sağ üst kısmında yazan config e tıklayarak kendimize bir editör seçiyoruz... varsayılan editör windows un notepad.exe sidir. ben ya notepad2.exe yada notepad++ yazılımını seçmenizi tavsiye ediyorum. aksi halde karışık bir şekilde görüntüleme yapacaksınız

    bu ayarı kaydedip işlemimiz olan my.ini dosyamızı değiştirmek için
    2. sırada bulunan mysql yazısının sağ tarafında olan Config butonuna basarak my.ini dosyamızı açıyoruz ve

    başkısmında # işareti olan şu satırı bulalım, zaten hemen altında diğer satırımız var oda # işareti ile değeri önemsiz/açıklama satırı durumuna çekilmiş
    #collation_server=

    [​IMG]

    bu satırımızı bulunca, başlarındaki # işaretini siliyoruz ve kullanmak istediğiniz karakter formatına çeviriyoruz ki, ben utf8 genaral_ci kullanacağım için onu seçiyorum.
    collation_server=utf8_general_ci
    character_set_server=utf8


    işlem bittikden sonra kaydedip apache ve mysql i çalıştırabiliriz

    ilk planda birşey farketmeyebilirsiniz
    hemen database oluşturma adımına gidip kendinize test2 db si oluşturun ama karakter tipini seçmeden OK ile işlemi yapın. sonra tüm var olan database listesine baktığınızda az önce yazmış olduğunuz dil seçimi varsayılan olarak atanmış olduğunu görebilirsiniz...

    peki soru...

    daha önce açmış olduğunuz db lerde ne yapacaksınız ?
    cevab : db içerisine giriniz ve

    [​IMG]

    resimde görüldüğü gibi operations sekmesine basınız ki ben de sizinle TEST2 db sinde işlem yapıyorum.
    yeni bir ekranımız açılacak;

    [​IMG]

    bu resimde gördüğünüz gibi daha önce hangi format da açmış isek, db mizin karakter setini burdan değiştirebiliriz.

    tabiki içi boş olan db yi silip yeniden de oluşturabilirsiniz ama ben var olan de silinemeyecekler için örnekliyorum....

    artık bundan sonra o db içinde oluşturacağınız her tablo nun varsayılan karakter seti DB tanımınıza göre oluşturulacak. db lerinizde my.ini dosyasından almış olacak.

    herşey tamam ama en büyük sorun ve soru şimdi

    ben ... karakter seti ile db oluşturmuşum ve içine de .... adet tablo oluşturmuşum.... adet kaydım var... listelerde kayıtlarsa sorun yaşıyorum. çözümü nedir dediğiniz de olay biraz maalesef yokuşa koşturmak zorundayım.

    alter table gibi komutları sql den girmeniz ve bazı dönüşemeyecek karakterleri de elle değiştirmeniz gerekecek.... maalesef
    bunun için bazı arkadaşlarımızın elinde hazır script ler olabilir ama maalesef bende yok. ben ilk başlarda çok fazla kaydım da olmadığı için her kaydı elle düzeltip sonra yeniden kayıt etmiş idim.

    kodlama kısmı başka bir ders ve konu... biz boş db ve tablo için yaptık...

    ama db ve tablo yu kod ile oluşturmak tanımlamak isterseniz hemen kodunu paylaşayım...

    db oluşturacaksanız; db listesinin olduğu ekrandaki SQL sekmesine geçiyor ve;

    CREATE DATABASE db_name [[DEFAULT] CHARACTER SET charset_name] [[DEFAULT] COLLATE collation_name]
    kodları ile database imizi oluşturabilirsiniz...

    var olan bir db üzerinde karakter set değişimi yapmak istiyorsanız ise....

    ALTER DATABASE db_name [[DEFAULT] CHARACTER SET charset_name] [[DEFAULT] COLLATE collation_name]

    yapabilirsiniz... ama belirtiyorum.. bu tür işlem yapmadan önce mutlaka ister db ister table yedeğini mutlaka alınız.. hatalı seçim yapılmış bile olsa elinizde HAM export bir db olsun.

    alter komutu tüm sql işlemlerinde var olan .... db objesinin üzerinde değişim yapmak için kullanılır.

    bu kod mysql - mssql - oracle - firebird... gibi farklı db yönetimlerinde alter database, alter table diye başlar ama sonrasında sıralama ve tanım formatlarında ufak değişimler olur.

    ben burda ALTER ile başlayan bir cümlenin; VAR OLAN OBJE üzerinde DEĞİŞİM için kullanıldığını hatırlatmak istedim.
    eğer siz olmayan bir obje için alter ile başlayan bir komut kullandığınızda hata mesajı görmeniz gayet normaldir.

    yeni obje tanımları create ile başlar.

    bunlar sql kod yazım formatları içine giriyor ama açıklamak istedim sadece

    başarılar
     
    zehradeniz ve Al-Farabi bunu beğendi.

Bu Sayfayı Paylaş