Index: openacs-4/packages/acs-core-docs/www/xml/developers-guide/tutorial-advanced.xml =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/xml/developers-guide/tutorial-advanced.xml,v diff -u -r1.43 -r1.44 --- openacs-4/packages/acs-core-docs/www/xml/developers-guide/tutorial-advanced.xml 1 Dec 2004 19:35:40 -0000 1.43 +++ openacs-4/packages/acs-core-docs/www/xml/developers-guide/tutorial-advanced.xml 13 Jan 2005 13:55:16 -0000 1.44 @@ -1583,7 +1583,89 @@ will be taken care of. + + Connect to a second database + It is possible to use the OpenACS TCL database API with + other databases. In this example, the OpenACS site uses a + PostGre database, and accesses another PostGre database called + legacy. + + + Modify config.tcl to accomodate the legacy database, and to + ensure that the legacy database is not used for standard + OpenACS queries: + ns_section ns/db/pools +ns_param pool1 "Pool 1" +ns_param pool2 "Pool 2" +ns_param pool3 "Pool 3" +ns_param legacy "Legacy" +ns_section ns/db/pool/pool1 +#Unchanged from default +ns_param maxidle 1000000000 +ns_param maxopen 1000000000 +ns_param connections 5 +ns_param verbose $debug +ns_param extendedtableinfo true +ns_param logsqlerrors $debug +if { $database == "oracle" } { + ns_param driver ora8 + ns_param datasource {} + ns_param user $db_name + ns_param password $db_password +} else { + ns_param driver postgres + ns_param datasource ${db_host}:${db_port}:${db_name} + ns_param user $db_user + ns_param password "" +} + +ns_section ns/db/pool/pool2 +#Unchanged from default, removed for clarity + +ns_section ns/db/pool/pool3 +#Unchanged from default, removed for clarity + +ns_section ns/db/pool/legacy +ns_param maxidle 1000000000 +ns_param maxopen 1000000000 +ns_param connections 5 +ns_param verbose $debug +ns_param extendedtableinfo true +ns_param logsqlerrors $debug +ns_param driver postgres +ns_param datasource ${db_host}:${db_port}:legacy_db +ns_param user legacy_user +ns_param password legacy_password + + +ns_section ns/server/${server}/db +ns_param pools * +ns_param defaultpool pool1 + +ns_section ns/server/${server}/acs/database +ns_param database_names [list main legacy] +ns_param pools_main [list pool1 pool2 pool3] +ns_param pools_legacy [list legacy] + + + To use the legacy database, use the + -dbn flag for any of the + db_ API calls. For + example, suppose there is a table called "foo" in the legacy + system, with a field "bar". List "bar" for all records with + this tcl file: + db_foreach -dbn legacy get_bar_query { + select bar from foo + limit 10 +} { + ns_write "<br/>$bar" +} + + + + + Future Topics