Posted by dom.killer on February 28, 2008 at 10:59am
Tôi tìm được bài viết này, rất mừng
http://drupal.org/node/18429
Nhưng tới đoạn: "This only works with two databases of the same type"
Có cách nào để sử dụng cùng lúc MySQL và Oracle không?
Comments
Hiện thời Drupal chỉ
Hiện thời Drupal chỉ hỗ trợ MySQl và PostgreSQL. Muốn là việc với các hệ cơ sở dữ liệu khác, nên xây dựng các webservices. Nhân Drupal có tích hợp XMLRPC khá hay, ngoài ra cũng có các module khác cũng hữu ích: services, json_server, RDF, ... Project SIREN của hswong cũng đáng để tham khảo.
Thế Hồng
Tôi biết chỉ hỗ trợ
Tôi biết chỉ hỗ trợ MySQl và PostgreSQL, ý của tôi là thay đổi cách load các driver cho thao tác với CSDL. Cách hiện nay của Drupal chỉ load được 1 driver vì tên hàm của các driver đều giống nhau (db_*). Còn cách nào khác mà không cần tạo Class không?
Có thể là cách này chăng:
<?php
$driver = 'mysql';
function db_query($query)
{
global $driver;
call_user_func('db_'.$driver.'_query', $query);
}
function db_mysql_query()
{
...
}
Nếu so về tốc độ thì call_user_func không nhanh bằng chạy trực tiếp, nhưng vẫn nhanh hơn nhiều so với method trong class, lại ít tốn memory. Tóm lại là dùng nhiều kiểu CSDL cùng một lúc chứ không phải hỗ trợ nhiều kiểu CSDL mà không dùng được cùng với nhau.
Vào file
Vào file sites/xxx/settings.php, định nghĩa thêm một biến chứa thông tin kết nối CSDL:
<?php
# default db configuration
$db_url = 'mysql://root:root@localhost/databasename001';
# this is your additional datbase
$db_url_2 = 'postgre://foo:bar@localhost/databasename002';
# ...
?>
Mỗi khi muốn sử dụng hàm db_query/pager_query đối với db2 thì:
<?phpdb_set_active($db_url_2);
$query = db_query ('...');
db_set_active($db_url);
?>
Tham khảo thêm hàm db_query và db_set_active.
Thế Hồng
Bạn vẫn chưa hiểu
Bạn vẫn chưa hiểu rồi. Làm theo cách bạn hướng dẫn thì 100% là báo lỗi do trùng tên hàm. Trong bài viết kia cũng đã ghi chú rồi, đâu thể làm như thế được. Chỉ có thể cùng là MySQL hoặc cùng là PostgreSQL chứ không thể dùng cả 2 một lúc dù có set active. Bạn xem thử: http://api.drupal.org/api/function/db_set_active/6
Đúng là tôi nói bậy
Đúng là tôi nói bậy rồi, code ở trên cũng trật lất :-D Nếu như vậy thì đành phải chấp nhận, hệ thống chỉ cùng lúc hoạt động với một loại hệ cơ sở dữ liệu. Xin lỗi.
Thế Hồng
Mới tìm được patch
Mới tìm được patch này: http://drupal.org/node/19522#comment-321714
Adrian cũng viết:
Thế Hồng
Kết nối CSDL Drupal với Phpbb3
Ai biết cách dùng chung CDSL của 2 cái này không, khi mình đăng ký acc ở Drupal thì có thể đăng nhập vào diễn đàn Phpbb3 và ngược lại.
Thanks
http://365Quangcao.com