Selamlar,

Bir umut mysql dökümantasyonundan şu alıntıyı yapayım;

A SET NAMES '*x*' statement is equivalent to these three statements:

SET character_set_client = *x*;
SET character_set_results = *x*;
SET character_set_connection = *x*;

SET NAMES bu üçünü yapan bir kısayol, bunları, ayrı ayrı dener misiniz?

Asıl değinmek istediğim nokta ise mysql'e bir bağlantı açtığınızda, o
bağlantı üstünde set names çalıştırırsanız yalnızca aktif oturumda geçerli
bir tanımlama yapmış olursunuz.

Bu tanım diğer baplantıları etkilemez. Sizin kurgunuzda iki farklı sitenin
(dolayısı ile iki farklı connection'un -mı acaba?--) bu tanımlanmadan
etkilendiğini, sorunu mysql'i yeniden başlatınca giderebildiğinizi
anlıyoruz.

Ve size sorular hazırladım;

* acaba veritabanı bağlantıları havuzlanıyor olabilir mi?
* php tarfında persistence connection kullanıyor musunuz?
* mysql'i restart etmek yerine apache'yi yeniden başlattığınızda durum
çözülüyor mu?

Hala olmadı ise mysql-proxy kurarak bağlantıları debug etmek, mysql server
istatistiklerinden aktif bağlantıları incelemek fikir verebilir.

Kolay gelsin..

21 Şubat 2012 11:46 tarihinde Nuri AKMAN <nuriak...@gmail.com> yazdı:

> Merhaba Atıf Bey,
>
> Zaman ayırıp uzun uzun yazdığınız bu faydalı mesaj için çok çok teşekkür
> ederim. Yazdıklarınızdan hareketle yaptıklarımı tekrar gözden geçirdim.
> Tarayiciya header ve meta tag ile göndermeyi ayrı ayrı denedim. Sonuç
> olumsuz.
>
> Test için bir dosya hazırladım. Ayrıca, mysql tablosunun da dump'ını
> aldım. Bunları ekte görebilirsiniz. Belki veritabanında bir hata vardır
> düşüncesiyle inceleyebilmeniz için ekte sunuyorum. Kodu çalıştırdığımdaki
> firefox ekran görüntüsü de yine dosya içinde mevcut.
>
> Eğer, set names komutu kullanmadan doğru çıktıyı alabilirsem sorunum
> çözülecek düşüncesindeyim.
>
> Selamlar,
> Nuri Akman
>
>
>
> 2012/2/21 Atıf CEYLAN <meh...@atifceylan.com>
>
>> **
>> Merhaba,
>> amacim sizin arastirmadan soru sordugunuzu dile getirmek filan degildi.
>> Bu sekilde bir dusuncem olmadi. Sadece bu konuda uzun zamandir sorun
>> yasadiginizi ve bir yerlerde gozden kacirdiginiz birseyler olabilecegini
>> vurgulamak istedim.
>>
>> karakter set olayi temelde birkac basligi olan bir konu. Bunun php veya
>> bir programlama dili ile dogrudan iliskisi yok. Veriyi saklarken karakter
>> set belirlersiniz, birde gosterirken. Eger saklarken karakter set UTF8
>> olsun der sonra gosterirken farkli bir set olsun derseniz o zaman bunu ya
>> db sunucunuzun donusturmesi ya da uygulama tarafinda sizin donusturmeniz
>> gerekir. UTF-8 temelde ingilizcede olmayan karakterlerin kullanilmasi icin
>> gelistirilmistir. Siz "A" yazdiginizda bu "A" olarak 1 byte olarak
>> saklanir. Ancak "Ğ" yazmak istediginizde bu iki byte uzunlugunda bir
>> karakter olarak saklanir.  UTF-8 bircok dili ayni anda iceren genis bir
>> settir. Bu nedenle sadece turkce kullanilacak bir proje icin eger db boyutu
>> onemli ise (diyelim ki 10 TB veri saklamak gerekiyor) o zaman sadece o dile
>> has olusturulmus karakter set ile veri kaydedilebilir. Ornegin Latin5
>> (ISO-8859-9). Bunda durum utf-8 gibi degildir. Tum set sadece turkce
>> karakterleri icerir diyelim.
>>
>> Buna gore siz veritabaninizda (mysql icin) tum tablolarinizi veya her
>> field icin ayri ayri dil seti kullanabilirsiniz. Ancak latin1 (isvecce)
>> setindeki bir tabloya turkce karakter basarsaniz o zaman db ile kulahlari
>> degisirsiniz.
>> Burada muhim olan ikinci nokta devreye girer. O da veritabanindan
>> saklandigi formattaki veriyi hangi set olarak isteyeceginizdir. Mysql
>> default olarak latin1 kabul eder (hala oyle mi bilemiyorum). Bunun anlami
>> client tarafinda (php olabilir baska bir client olabilir) veri cekilecegi
>> zaman mysql veriyi client default karakter setine gore gondermek
>> istemesidir. Eger siz mysql konfigurasyonunda global olarak benim
>> client'larimin karakter setleri latin5 derseniz, sakladigi veri utf-8 ise
>> veriyi latin5 olarak cevirip gondermek ister. Arada japon karakteri varsa
>> hata alirsiniz (mi emin degilim belki warning donuyordur ya da o
>> karakterleri atlayarak gonderiyordur bilemeyecegim. pg tarafinda error
>> alirsiniz.)
>>
>> Birde ikinci yontem olarak client db sunucuya kendi karakter setinin ne
>> oldugu bilgisini gonderir ve veriyi ona gore hazirlamasinin talimatini
>> verir. set name muhabbeti budur. Buna gore sizin client tarafinda da iki
>> konu onem arzeder.
>>
>> Uygulama kodlarinizin icerisindeki ekrana basilacak kisim hangi dilde
>> kayededilmis ise taryiciya sayfanin karakter setinin de o oldugunu
>> bildirmeniz gerekir. Ornegin. veri_goster.php dosyaniz icerisinde kodlama
>> yaparken, editor-ide her ne kullaniyorsaniz, kaydetme islemini utf8
>> yaptiniz. sonra html meta tag ve header'da karakter set olarak utf8
>> yazdiniz.bu php dosya icerisinde echo "merhaba TÜRKİYE"; yazdiniz ve altina
>> da veritabanindan gelen bir veriyi basmak istediniz.
>>
>> Eger db'de sakladiginiz veri latin5, db global degiskenleri icerisinde
>> client encoding latin5 ise ve siz kodunuzda "set name" ile herhangi bir
>> encoding belirtmemis iseniz bu durumda ekrana basacaginiz veride echo ile
>> yazdiginiz kisim normal gorunecek ama veritabanindan gelen kisim bozuk
>> gorunecektir. Tarayiciya header ve meta tag (explorer meta tag baz alir,
>> firefox header) olarak belirttigininiz karakter set iso-8859-9 yani turkce
>> ise bu durumda veritabanindan gelen bilgi dogru gorunecek, echo ile
>> yazdiginiz bilgi bozuk gorunecektir.
>>
>> Yazim yanlisi filan varsa kusura bakmayin. yeniden okumadan gonderiyorum
>> :)
>>
>>
>>
>>
>> On Tue, 2012-02-21 at 10:15 +0200, Nuri AKMAN wrote:
>>
>> Merhaba Atıf Bey,
>>
>> Zaman zaman karşıma çıkan bu karakterset konusunu Google ve sizlerin
>> desteği ile çözme gayretindeyim.
>>
>> Google'da *php mysql utf8 encoding problem* araması yaptığımda,
>> google'ın 1 milyondan fazla sonuç bulduğunu gördüm. Sanırım sizin tespit
>> ettiğiniz mesajlar da bu rakama dahil :)
>>
>> Keşke tüm sorunlar sadece bir doküman okunduğunda çözülebilecek kadar
>> kolay olsaydı da, biz programcılar anlamsız sorunlar için google araması
>> yapmakta geçen zamanımızı sosyal etkinliklerde kullanabilsek!
>>
>> Son olarak; Sadece bu konuda değil, her konuda elimden geldiğince
>> araştırma yapmaya çalışıyorum. Çoğu zaman çözüme ulaşıyorum. Neticeye
>> varamayınca da listedeki üstadlara başvuruyorum.
>>
>> Selamlar,
>> Nuri Akman
>>
>>
>>  2012/2/20 Atıf CEYLAN <meh...@atifceylan.com>
>>
>>  Sayin Nuri Hocam,
>> Ben sizin ile karakter set olayini o kadar ozdeslestirmisim ki, ufak bir
>> google arastirmasi yaptim ve netice itibari ile karakter set olayini basli
>> basina bir arastirma konusu yapmanizi oneriyorum.
>>
>> 2011 17 mayis'ta bir arkadas
>>
>>
>>  Listelerden takip ettiğim kadarı ile bir süredir karakter seti ile
>> ilgili sorun yaşıyorsunuz.
>>
>> Aslında defalarca yaşadığınız sorunu çözen yanıtlar aldınız ancak
>> sanıyorum bir noktada bir şeyler yanlış gidiyor.
>>
>>
>> seklinde baslayan bir mail yazmis,
>>
>> 2009 kasim 24'te yine benzer bir soru sormussunuz ve yine ayni konu
>> etrafina bir suru arkadas yazmis.
>>
>> Arkadaşlar,
>>
>> MySQL database'de Latin5 olarak oluşturulmuş bir tablom var. Bu
>> tablodaki verileri UTF-8 formatlı bir PHP dosyamda kullanmka istediğimde
>> TR karakterler bozuk geliyor. Dosyanın UTF-8 olan türünü ANSI yapınca da
>> ekrandaki diğer yazılar bozuluyor.
>>
>> Bu sorunu MySQL'deki tablomu UTF-8'e çevirmeden çözebileceğim bir metod
>> var mıdır?
>>
>> Selamlar,
>> Nuri Akman
>>
>>
>> Acikcasi bu konuyu cidden arastirmanizi oneriyorum.
>>
>>
>>
>>   --
>>
>> /**
>>  * *@author* Atıf CEYLAN
>>  * Software Developer & System Admin
>>  * http://www.atifceylan.com
>>  */
>>
>>
>> _______________________________________________
>> Linux-programlama mailing list
>> Linux-programlama@liste.linux.org.tr
>> https://liste.linux.org.tr/mailman/listinfo/linux-programlama
>> Liste kurallari: http://liste.linux.org.tr/kurallar.php
>>
>>
>> _______________________________________________
>> Linux-programlama mailing 
>> listlinux-programl...@liste.linux.org.trhttps://liste.linux.org.tr/mailman/listinfo/linux-programlama
>> Liste kurallari: http://liste.linux.org.tr/kurallar.php
>>
>>
>>   --
>>
>> /**
>>  * *@author* Atıf CEYLAN
>>  * Software Developer & System Admin
>>  * http://www.atifceylan.com
>>  */
>>
>>
>> _______________________________________________
>> Linux-programlama mailing list
>> Linux-programlama@liste.linux.org.tr
>> https://liste.linux.org.tr/mailman/listinfo/linux-programlama
>> Liste kurallari: http://liste.linux.org.tr/kurallar.php
>>
>>
>
> _______________________________________________
> Linux-programlama mailing list
> Linux-programlama@liste.linux.org.tr
> https://liste.linux.org.tr/mailman/listinfo/linux-programlama
> Liste kurallari: http://liste.linux.org.tr/kurallar.php
>
>
_______________________________________________
Linux-programlama mailing list
Linux-programlama@liste.linux.org.tr
https://liste.linux.org.tr/mailman/listinfo/linux-programlama
Liste kurallari: http://liste.linux.org.tr/kurallar.php

Cevap