drupal6: ย้ายจาก MySQL เป็น PostgreSQL

บันทึกการย้ายฐานข้อมูล Drupal รุ่น 6.13 จาก MySQL-5.0.51a-24+lenny1 มาเป็น PostgreSQL-8.3.7-0lenny1

เที่ยวนี้ได้สคริปต์ดีจาก Drupal 6.x. site Migration from MySQL to PostgreSQL (howto) จึงสามารถทำตรงกับฐานข้อมูลได้เลย

  1. แบ๊คอัปกันเหนียวเสียก่อน
    $ mysqldump -u my_admin -p my_drupal_db > drupal.mysql.sql
  2. แก้ไข sites/default/settings.php ให้มาใช้ postgres
    $ vi sites/default/settings.php
    ...
    #$db_url = 'mysql://my_admin:my_password@localhost/my_drupal_db';
    $db_url = 'pgsql://pg_admin:pg_password@localhost/pg_drupal_db';
    ...
  3. เข้าไซต์ที่ใช้ฐานข้อมูลใหม่ สั่ง install ล๊อกอินเป็น admin พร้อมทั้งเปิดมอดูลทุกอัน
    http://www.example.com/install.php
    http://www.example.com/?q=user/login
    http://www.example.com/?q=admin/build/modules

    อย่าลืมเปิดมอดูลทุกอัน

  4. ดาวน์โหลดสคริปต์มาใช้งาน แตกไฟล์ และแก้ไขชื่อ admin พร้อมรหัสผ่านให้เรียบร้อย
    $ wget http://blog.lexa.ru/files/drupal-mysql2pgsql.pl.gz
    $ gunzip drupal-mysql2pgsql.pl.gz
    $ vi drupal-mysql2pgsql.pl
    ...
    #my $srcdb = DBI->connect("dbi:mysql:database=$ARGV[0]") or die;
    my $srcdb = DBI->connect("dbi:mysql:database=$ARGV[0]","my_admin","my_password") or die;
    #my $destdb = DBI->connect("dbi:Pg:dbname=$ARGV[1]") or die;
    my $destdb = DBI->connect("dbi:Pg:dbname=$ARGV[1]","pg_admin","pg_password") or die;
    ...
  5. สั่งรันสคริปต์
    $ ./drupal-mysql2pgsql.pl my_drupal_db pg_drupal_db

เสร็จแล้วครับ เข้าไซต์ที่ใช้ฐานข้อมูลใหม่ได้เลย