• 06-09-2009, 22:37:23
    #1
    İki tane yapmam gereken şey var php sitemdeki veritabanlarımda:

    1- host değiştirdiğimde tüm tablo ve değişkenlerin karakter seti default olduğu için sanırım ve yanlışlıkla latin1_swedish_ci olmuş bunun için tek sql sorgusu ile tüm bu değerlerin (her bir tablo ve ne tür karakter kodlaması kaydı varsa veritabanında.) hepsinin latin5_turkish_ci olmasını, daha doğrusu türkçe karakterleri en sorunsuz şekilde gösterecek karakter seti olarak değiştirmek istiyorum. Bu işlemi tek tek yapmak üstelik bir sürü site için yapmak gerçekten çok çok zor. umarım bu tür bir imkan vardır sql de.

    2- şu anda veritabanında bir çok karakterde yanlışlık var ve karakter kodlamasını değiştirsem de baştan itibaren taşınmadaki sorun yüzünden yanlış görünüyor. bu yüzden yukarıdaki işlemi yaptıktan sonra bu defa tek tek her bir kaydı değiştirmemek için toplu olarak (frontpage'deki kaynak'tan dosyaların bir çoğunda arama yapıp belli bir değeri başka bir değerle değiştirmek gibi ya da office-word deki "Find Replace" "bul değiştir" işlemi gibi belli kayıtları doğruları ile değiştirmek istiyorum. Yani tüm veritabanındaki "ý" şeklindeki girişleri doğrusu olan "ı" olarak değiştireceğim.

    Bu konuda kolay bir yol bilen var ise memnun olurum. Esas olarak yapmak istediğim şey taşıma sırasında oluşan olumsuzluğu çözmek ve bu tür yaşanan çözümler için genel bir kolay çözüm bulmak.

    Yardımlar için şimdiden teşekkür ediyorum

    Saygılar
  • 07-09-2009, 01:27:45
    #2
    İlk soru için tabloyu yaratırken;

    "ALTER TABLE tabloadi CHARACTER SET latin5 COLLATE latin5_turkish_ci"

    bunu yazmanız yeterli.

    İkincisi için;

    "UPDATE tabloadi SET tabloalani = replace(tabloalani, 'onur', 'deneme')"

    bul: onur
    değiştir: deneme
  • 07-09-2009, 02:25:13
    #3
    ikinci sorun sanırım tamam.
    ama ilk soruda çözemedik. çünkü benim sorum yaratılmış tablolarda sadece karakteri değiştirmek. yani site çalışıyor taşımış ben ve veritabanını indirip sql olarak sonra search replace yaparak değiştirmek mümkün bunları sanırım ama bunun dışında sql komutu olarak bu çalışan veritabanında bir yol olmalı

    cevap için teşekkür ederim...

    zoizo adlı üyeden alıntı: mesajı görüntüle
    İlk soru için tabloyu yaratırken;
    "ALTER TABLE tabloadi CHARACTER SET latin5 COLLATE latin5_turkish_ci"
    bunu yazmanız yeterli.
    İkincisi için;
    "UPDATE tabloadi SET tabloalani = replace(tabloalani, 'onur', 'deneme')"
    bul: onur
    değiştir: deneme
  • 07-09-2009, 02:42:10
    #4
    Emin değilim ama CHANGE operatörü ile olması lazım.
  • 07-09-2009, 03:58:26
    #5
    sql i download et. not defteriyle aç ve bul değiştir yaparak latin1_swedish_ci lerin hepsini latin5_turkish_ci yap. kaydedip tekrar yükle sunucuya?
  • 07-09-2009, 09:19:36
    #6
    Advisor adlı üyeden alıntı: mesajı görüntüle
    sql i download et. not defteriyle aç ve bul değiştir yaparak latin1_swedish_ci lerin hepsini latin5_turkish_ci yap. kaydedip tekrar yükle sunucuya?
    bunun dışında bir yol arıyorum sql komutu olabilir mi diye..

    ReferXchange adlı üyeden alıntı: mesajı görüntüle
    veritabanını indirip sql olarak sonra search replace yaparak değiştirmek mümkün bunları sanırım ama bunun dışında sql komutu olarak bu çalışan veritabanında bir yol olmalı
  • 08-09-2009, 04:47:23
    #7
    Şöle bir kod işini görür sanırım.Kodu ben yazmadım kütübanede saklıydı yazan arkadaşada burdan tşk ediyorum.

    Alıntı
    <?php
    $dbhost = ‘localhost’;
    $dbuser = ‘root’;
    $dbpass = ”;
    $dbname = ‘db_name’;
    $collation = “utf8_general_ci”;
    $charset = “utf8″;
    mysql_connect($dbhost,$dbuser,$dbpass);
    mysql_select_db($dbname);
    mysql_query(“ALTER DATABASE $dbname COLLATE $collation”);
    $result = mysql_query(“SHOW TABLES”);
    while ($row = mysql_fetch_row($result)) {
    mysql_query(“ALTER TABLE $row[0] COLLATE $collation”);
    $result1 = mysql_query(“SHOW COLUMNS FROM $row[0]“);
    while ($row1 = mysql_fetch_assoc($result1)) {
    if (preg_match(‘~char|text|enum|set~’, $row1[“Type”])) {
    mysql_query(“ALTER TABLE $row[0] MODIFY $row1[Field] $row1[Type] CHARACTER SET $charset”);
    mysql_query(“ALTER TABLE $row[0] MODIFY $row1[Field] $row1[Type] COLLATE $collation DEFAULT ‘$row1[Default]‘”);
    echo $row[0] . “-&gt;” . $row1[Field] . “-&gt;” . $row1[Type] . ” is now UTF8
    “;
    }
    }
    }
    mysql_free_result($result);
    ?>
  • 08-09-2009, 09:18:47
    #8
    kod için çok teşekkür ediyorum,

    anladığım kadarıyla bu verdiğiniz kodu. degistir.php gibi bir dosya yapacağız ve hosta atıp o url ye gidince işlem gerçekleşecek değil mi?
    ayrıca alttaki satırları da değiştirmemiz gerekiyor istediğimize göre:1

    $dbhost = ‘localhost’;
    $dbuser = ‘root’;
    $dbpass = ”;
    $dbname = ‘db_name’;
    $collation = “utf8_general_ci”;
    $charset = “utf8″;

    peki burada son iki girişi neye göre ayarlayacağım bu şekilde kaldığında hepsini utf8_general_ci mi yapıyor? bu türkçe dil karakter sorununu çözüyor mu acaba?

    Saygılar

    aLKaDraZ adlı üyeden alıntı: mesajı görüntüle
    Şöle bir kod işini görür sanırım.Kodu ben yazmadım kütübanede saklıydı yazan arkadaşada burdan tşk ediyorum.
  • 08-09-2009, 09:27:13
    #9
    Üyeliği durduruldu
    tablo yu oluştur hiç içeriye tablo göndermeden
    ALTER DATABASE `veriTabaniAdi` DEFAULT CHARACTER SET latin5 COLLATE latin5_turkish_ci
    bu sorguyu çalıştır daha sonra tabloları gönder
    yine çözemezsen bir teknik daha var da pm ile söylerim onu