Mengganti String Secara Masal Di Database MySQL

Posted in Web Development on April 9st, 2008 | (4,425) Comments

Beberapa waktu yang lalu, stuff saya bertanya kepada mas Jauhari tentang cara menghandle URL untuk uploaded file di WordPress. Secara default, store WordPress akan menggunakan recent URL (URL web, dalam kasus saya adalah: http://local.web/) pada meta file yang diupload.

Saya sedang mengerjakan sebuah website berbasis WordPress dan berencana mengisi content di localhost. Masalah yang saya temui tentu saja saat melakukan upload file, maka meta di file tersebut akan terisi: http://local.web/wp-content/uploads/…”. Sehingga ketika saya upload ke hosting, pasti bakalan ada masalah jika ada post yang menggunakan file tersebut. Misalnya untuk image tag <img src=”..”>.

Ada beberapa solusi yang bisa dilakukan untuk menyelesaikan masalah tersebut. Yaitu:

  1. Mengisi content secara online dengan menggunakan URL yang sebenarnya. Tetapi tentu saja saya harus online.
  2. Membuat virtual host dengan domain sama persis dengan yang akan digunakan. Tetapi akan menimbulkan masalah kalau saya akan mengakses web yang sebenarnya (versi lama), walaupun bisa dinyalakan atau dimatikan dengan mengedit file hosts.
  3. Mengganti semua string “http://local.web/” menjadi “http://domain.com/” di dalam post, secara manual (Manage > Post > Edit).
  4. Mengganti semua string “http://local.web/” menjadi “http://domain.com/” di setiap record di dalam database.

Solusi yang saya pilih adalah menggunakan opsi no 4. Mengganti string di MySQL dengan metode “find replace”. Cara melakukakannya juga mudah. Bisa mengunakan phpMyAdmin atau console MySQL. Berikut ini perintah untuk mengganti string secara masal di database MySQL.

UPDATE nama_tabel SET nama_kolom = REPLACE(nama_kolom,"string_asal","string_pengganti")

Jika bekerja dengan WordPress, dan ingin mengupdate semua post yang memiliki string http://local.web/, berikut contoh perintah SQL-nya.

UPDATE `wp_posts` SET `post_content` = REPLACE(`post_content`,"http://local.web/","http://domain.com/")

Selesai. Tetapi saat menulis ini saya kembali berpikir ulang, dan saya pikir opsi nomer 2 lebih praktis buat saya. Tinggal memberi tanda # pada record yang menunjukkan bahwa domain.com berada di 127.0.0.1 :D

Pilihan mana yang cocok buat Anda?

Catatan tambahan:

RSS