• 12-09-2012, 13:21:03
    #1
    Arkadaşlar Smf forumdan Mybb foruma geçiş yapıyorum ama gece 12 den beri hala sorunu çözemedim.

    öncelikle eski forumumdan bahsedeyim.. smf forumun veritabanın karşılaştırması utf8 ancak içerideki tablolar falan latin5 swedish gibi şeyler vardı bunların hepsini de utf 8 e çevirerek yedek aldık , yeni forumumuzu da utf8 olarak oluşturup merge yazılımı ile tüm konuları üyeleri sorunsuz aktardık.Ancak yine problemlerimiz devam ediyor. Nasıl yedek almamız gerekiyor. nasıl yüklememiz gerekiyor denemediğimiz şey kalmadı.

    Acaba latin5 olarak yedeği alıp, sonrasında utf8 olan yeni foruma yükleyip oluşan karakter hatalarını replace yöntemi ile tek tek mi düzenlememiz gerekiyor.. Yoksa yedek almadan evvel eski forumun tüm tablolarını utf8 yaparak daha sonra forumu aktarma işlemini yaptıktan sonra yeni forumda çıkan hataları tek tek düzeltmemizmi gerekiyor.

    --R10.NET; Flood Engellendi -->-> Yeni yazılan mesaj 13:21:03 -->-> Daha önceki mesaj 11:45:51 --

    neyse buldum sorunu
    bu tarz bir sorun yaşayan başka bir arkadaş olursa diye çözümünü yazayım..

    önce smf de bulunan bütün tablolarınızı utf genaral ci yapıyosunuz ister tek tek isterseniz


    <?php
    // Bu script Kaan Topal tarafindan haziranmistir.
    // http://www.topal.biz
    
    //MySQL bağlantı ayarları
    $db_server = 'localhost';
    $db_user="DB KULLANICI ADI ";
    $db_password="ŞİFRE";
    
    mysql_connect($db_server, $db_user, $db_password) or die(mysql_error());
    
    //Buraya ayarlarını değiştirmek istediğiniz veritabanı
    //adını girin veya tüm veritabanı üzerinde değişiklik yapmak
    //istiyorsanız boş bırakınız.
    $dblist=array('VERİTABANI ADI');
    
    //Eğer değiştirlmesini istemediğiniz bir veritabanı varsa buraya
    //girişini yapınız. information_schema veritabanı ana veritaban olduğu
    //için karakter setini değiştirmenize gerek yoktur.
    $skip_db_list = array('information_schema', 'mysql');
    
    //Hangi karakter tipi kullanilacak?
    $charset="utf8";
    
    //Hangi karşılaştırma kullanılacak?
    $collation="utf8_general_ci";
    
    //Sadece kullanılan veritabnlarını göster.
    //Bu özelliği false olarak kullanınız.
    $printonly=false;
    
    //Bu bölge boş bırakılırsa, kullanıcı adı üzerinde
    //bulunanan tüm veritabanları üzerinde etkileşim
    //uygulanır.
    $skip_db_text = '"'.implode('", "', $skip_db_list).'"';
    if(count($dblist)<1) {
        $sql="SELECT GROUP_CONCAT(`SCHEMA_NAME` SEPARATOR ',') AS FRST FROM `information_schema`.`SCHEMATA` WHERE `SCHEMA_NAME` NOT IN ($skip_db_text)";
        $result = mysql_query($sql) or die(mysql_error());
        $data = mysql_fetch_assoc ($result);
        $dblist=explode(",", $data["FRST"]);
    }
    
    //Veritabanı güncellemesi
    foreach ($dblist as $dbname) {
        $sql="SELECT CONCAT('ALTER TABLE `', t.`TABLE_SCHEMA`, '`.`', t.`TABLE_NAME`, '` CONVERT TO CHARACTER SET $charset COLLATE $collation;') as FRST FROM `information_schema`.`TABLES` t WHERE t.`TABLE_SCHEMA` = '$dbname' ORDER BY 1";
    
        $result = mysql_query($sql) or die(mysql_error());
        while ($row = mysql_fetch_assoc($result)) {
            echo $row["FRST"]."\r\n";
            if(!$printonly) {
                mysql_query($row["FRST"]) or die(mysql_error());
            }
        }
    }
    ?>
    Bunun sayesinde tek tek uğraşmak yerine o tablodaki bütün karakter setlerini değiştirebilirsiniz..

    karakter setlerini değiştirdikten sonra sıra eski veritabanınınız üzerinde tek tek bakıp hangi tablolarda sorun varsa o tabloları bu sorguyla değiştirin.. başka forumlarda anlatım yapmışlar ama nedense ben onları uyguladığım zaman tek satır uygulayınca çalışıyordu sorgu ama 4-5 satır olunca veya 2 satır olunca hata veriyordu.. neyse şimdi bu çalışanı

    UPDATE backup_smf_ban_groups SET notes = replace( notes, 'ð', 'ğ' );
    UPDATE backup_smf_ban_groups SET notes = replace( notes, 'ý', 'ı' );
    UPDATE backup_smf_ban_groups SET notes = replace( notes, 'Ð', 'Ğ' );
    UPDATE backup_smf_ban_groups SET notes = replace( notes, 'Ý', 'İ' );
    UPDATE backup_smf_ban_groups SET notes = replace( notes, 'Þ', 'Ş' );
    UPDATE backup_smf_ban_groups SET notes = replace( notes, 'þ', 'ş' );
    daha sonra yeni mybb forumunuzu kuruyorsunuz ondan sonra mergeyi çalıştırıyorsunuz ve aşağıdan karakter setini UTF 8 olarak seçip, bir alt şıkta yazan Utf8'e çevirilsinmi şıkkını hayır diyin, zaten manuel olarak biz bunu yapmıştık.

    ve forumunuz hazır..
  • 15-09-2012, 00:07:44
    #2
    Hayırlı olsun hocam. Acaba forumunuzu öm ile yollayabilirmisiniz?
    SMF'den Mybb'ye geçiş sebebinizi de merak etmiyor değilim açıkcası
  • 15-09-2012, 02:41:10
    #3
    şuan localde çalışıyorum, çok rahat süpermiş.. tema düzenlemeleri falan ilk kez yapmama rağmen adamlar öyle açık yazmışlarki açıklamaları falan forumu kafama göre her yerini editledim yalnız daha önce smf de de beceremiyordum şu yönetici yetkilerini falan burada da localde onu çözmeye çalışıyorum deneme yaparak.. yöneticiyi forumlara özel olark atadığım zaman sıkıntı yok, ama bir yönetici grubu ayarladığım zaman tek tek kullanıcılara özel yetki vermezsem forumda sadece adı görünüyor etkisi yok
  • 15-09-2012, 12:03:58
    #4
    Başka sorununuz olursa buraya yazın cevaplamaya çalışalım.
    Dediğiniz yetki verme olayını anlamadım