[support] [solved] Can't change database connection
Tim Johnson
tim at akwebsoft.com
Thu Jan 3 00:29:18 UTC 2013
* Tim Johnson <tim at akwebsoft.com> [130102 10:15]:
> When this code is executed, I get an error: as follows
<....>
> PDOException: SQLSTATE[HY000] [2002] No such file or directory in db_merge()
> (line 2416 of /Users/http/sites/daily/includes/database/database.inc).
>
> So what am I doing wrong?
I believe that I have solved the process of switching databases and
inserting data:
I am on mac osx 10.7, and there is a socket issue for drupal 7 on
macs -
see : http://drupal.org/node/752856
title :
"""
Document OS X PDO socket installation issues
"""
Two steps are needed:
1) Define connection information as an entry in settings.php to the
$databases array as follows:
'dba' => array (
'default' => array (
'driver' => 'mysql',
'database' => 'aisbooks',
'host' => 'localhost',
'username' => 'tim',
'password' => 'marion',
// explicitly define the socket file for mysql
'unix_socket' => '/opt/local/var/run/mysql5/mysqld.sock',
),
),
The default setting in php.ini for pdo_mysql.default_socket
is /tmp/mysql.sock - which works for non-drupal PHP, but
I had to create a soft link for the 'unix_socket' value above,
as is explained in the document above.
2) The following code :
// Implementation of hook_form_submit in module :
// form_example.module
function form_example_form_submit($form,&$form_state) {
$result = Database::getConnection('default','dba');
db_set_active('dba');
$fe_id = db_insert('providers')
->fields(array(
'status' => $form_state["values"]["mynumber"],
'name' => $form_state["values"]["mytextfield"],
))->execute();
db_set_active();
drupal_set_message('Your form entry has been added.');
}
I hope this add something to the drupal knowledgebase. Kudos to
Ernie to pointing out the 'red herring'.
cheers
--
Tim
tim at tee jay forty nine dot com or akwebsoft dot com
http://www.akwebsoft.com
More information about the support
mailing list