Azizce

Ben, Kendim & PHP

Skip to: Content | Sidebar | Footer

WordPress Tablo Adlarını Değiştirmek

31 Mayıs, 2008 (03:35) | PHP, Wordpress | Alihan Çetin tarafından yazılmış

wordpressAzizce ‘yi geçen hafta WordPress altyapısına taşıdım. Eski Azizce ‘yi ise içeriğinden faydalanabilinmesi için açık tutuyorum. Taşınma esnasında ufak bir problem yaşadım. Daha önce test amaçlı kurduğum WordPress ‘in tabloları ile yeni Azizce ‘nin WordPress tabloları çakışacaktı.


Dolayısıyla aşağıda yazdığım küçük PHP script ‘i ile tabloları yeniden adlandırdım:

<?php
// MySQLi Bağlantısı
$db = new mysqli('localhost','kullanici_adi','sifre','veritabani_adi');
 
// Bağlantı Hata Kontrolü
if (mysqli_connect_errno()) {
		echo 'Bağlantı Sağlanamıyor: ' . mysqli_connect_error();
}
 
// Gerekli olmayabilir ama karakter setlerini
// garanti altına alalım
$db->query("SET NAMES 'utf8'");
$db->query("SET CHARACTER_SET 'utf8'");
 
// Veri tabanındaki tabloları çekme sorgusu
// Eğer veritabanınızda sadece kurduğunuz
// Wordpress 'in tabloları yoksa buradan sonra
// $tablolar dizisini filtrelemeniz gerekir.
// Tavsiye: eregi(), preg_match()
$sorgu = "SHOW TABLES";
 
$sonuc = $db->query($sorgu);
 
// Veri çekebildiysek...
if($sonuc->num_rows > 0) {
 
	$tablolar = array();
 
	// Gelen veriler tablo adları $tablo dizisine ekle
	while($satir = $sonuc->fetch_array(MYSQLI_BOTH)) {
 
		$tablolar[] .= $satir[0];
	}
	// Belleği boşaltmak burada önemli değil ama elimiz alışsın ;)
	$sonuc->free();
	// Başka sorgularımız da olacak bu değişkenleri silip yenilerine yer açalım
	unset($sorgu,$sonuc,$satir);
}
 
// Her tablo adı için bir MySQL sorgusu yapıp isimlerini değiştiriyoruz
for($i=0; $i<count($tablolar); $i++) {
 
	$sorgu = "RENAME TABLE ".$tablolar[$i]."  TO yeni_onek_" .$tablolar[$i]."";
 
	// Oldu mu ??
	if(!$db->query($sorgu)) {
		echo $db->error ." :: " .$db->errno;
	}
}
// Bağlantıyı kapat
$db->close;
 
?>

wp-config.php dosyasındaki $table_prefix değişkenini de güncelledikten sonra (yeni_onek_) siteyi açtım. Sitenin açılmasında bir problem olmadı. Bende yeni düzenlemeler için yönetim panelini açtım. Karşımda şu mesaj vardı:

You do not have sufficient permissions to access this page.
Bu sayfaya ulaşma izniniz yoktur.

Hayda!! Bir – 1,5 saat civarında oturup WordPress ‘in kodlarını inceledim. Acaba bir bug mı oluştu tablolarla oynayınca diye. WordPress kodlarını güzelce incelemekten öteye gidemeyen bu uğraştan sonra, sıkışanın yardımcısı, biricik arama motoru Google ‘da sadece “wordpress table prefix” yazmam yeterli oldu. Oyalanmamın sebebi aslında birazda Azizce ‘yi nereye kurduk, depreme dayanıklı mı acaba ;) şeklindeki düşüncelerimdi.
Colin Seymour ‘un olayı tam 1 sene evvel çözüp blogunda paylaştığını gördüm.

WordPress ‘te yaptığımız bazı ayarlamalarda, tablo isimleri veritabanına kaydediliyormuş. Dolayısıyla önceden tabloadi olan tablomuz şimdi yeni_onek_tabloadi olduğundan ötürü, veritabanında kayıtlı satırları da düzeltmek gerekmeyteymiş.

Peki bu düzeltmeler neymiş? :

${yeni_onek_}options tablosundaki:

  • ${varsa_eski_onek_}user_roles seçeneği

ve

${yeni_onek_}usermeta tablosundaki:

  • ${varsa_eski_onek_}capabilities seçeneği
  • ${varsa_eski_onek_}user_level seçeneği
  • ${varsa_eski_onek_}autosave_draft_ids seçeneği

kısımlarını bulup , ${varsa_eski_onek_} yerine ${yeni_onek_} yazmak. Yani yine eski tablo önekini yeni tablo önekiyle değiştirmek. Ancak tabi buradaki fark tablo satırlarını değiştirmenizde.

Benzer şekilde eski tablo öneklerinizi içeren satırlar varsa bunları bulup yenisiyle değiştirmeniz gerekmekte.

Umarım bu tiyo işinize yarar. Bu şekilde bir veritabanına bir çok kez rahatça WordPress kurabilirsiniz.

Yorumlar

Mustafa ŞAPÇILI demişki
31 Mayıs, 2008 @ 03:54

Umarım ihtiyacımız olmaz :)

Alihan Çetin demişki
31 Mayıs, 2008 @ 04:03

Aslında sadece ters durumlar için yazmadım bu yazıyı Mustafa. Bir kaç blog birden tutan var. “A, ben bu blogun tablolarını şu şekilde isimlendireyim” diyen de olabilir, kolaylık açısından ;)

Rap demişki
17 Eylül, 2008 @ 03:10

illaki birileri arar lazım olur…

Alihan Çetin demişki
13 Ekim, 2008 @ 04:43

İnanmıyorum ya :D Hastalık böyle birşey işte. Hahahahghgh öhö!
1 saat 42 dakikadır bir wordpress site taşımadan mütevellit

Bu sayfaya erişmek için yeterli izniniz yok
You do not have sufficient permissions to access this page.

sorununa çözüm arıyorum. Şurayı buldum. Düzelttim, sevindim birde adama teşekkür ettim 8]

O esnada bunu Azizce‘ye de yazayım insanların işine yarar dedim, demez olaydım :D Zaten buradaymış. Kopmuş durumdayım. Hastalık böyle birşey işte, adama yazdırdığını bir daha, arattığını bir daha, düşündüğünü bir daha düşündürür :) )

Satranç demişki
19 Ekim, 2008 @ 20:13

Çalışmaması için bir neden görmemekle birlikte, bu işlem wordpress mu da sorunsuz olarak çalışıyor mu?

Azizce.Com demişki
19 Ekim, 2008 @ 20:44

WordPress mu ‘nun tablo yapısını bilmiyorum , ancak gördüğünüz kod aslında standart bir mysql prosedürü. Tablo isimlerini değiştiriyoruz kısacası.
Siz uyarlarsanız neden çalışmasın?

İyi Çalışmalar,
Aziz

Yorum yazın





Additional comments powered by BackType