From: saschagros at gmail dot com Operating system: Linux PHP version: 6CVS-2009-07-02 (snap) PHP Bug Type: PDO related Bug description: Incorrect error when setting PDO::ATTR_STATEMENT_CLASS with ctor_args
Description: ------------ I'm getting the following error when the ATTR_STATEMENT_CLASS option is set... Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000]: General error: PDO::ATTR_STATEMENT_CLASS requires format array(classname, array(ctor_args)); the classname must be a string specifying an existing class' in ..../drupal7/includes/database/database.inc:338 The same configuration works for PHP 5.2 and 5.3 The reproduce code is the constructor of the DatabaseConnection class of Drupal 7, see also http://cvs.drupal.org/viewvc.py/drupal/drupal/includes/database/database.inc?revision=1.57&view=markup Reproduce code: --------------- function __construct($dsn, $username, $password, $driver_options = array()) { // Because the other methods don't seem to work right. $driver_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION; // Call PDO::__construct and PDO::setAttribute. parent::__construct($dsn, $username, $password, $driver_options); // Set a specific PDOStatement class if the driver requires that. if (!empty($this->statementClass)) { $this->setAttribute(PDO::ATTR_STATEMENT_CLASS, array($this->statementClass, array($this))); } } Expected result: ---------------- The connection can be established.... Actual result: -------------- Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000]: General error: PDO::ATTR_STATEMENT_CLASS requires format array(classname, array(ctor_args)); the classname must be a string specifying an existing class' in ..../drupal7/includes/database/database.inc:338 Stack trace: #0 .../drupal7/includes/database/database.inc(338): PDO->setAttribute(13, Array) #1 .../drupal7/includes/database/mysql/database.inc(36): DatabaseConnection->__construct('mysql:host=loca...', 'd7', 'd7', Array) #2 /.../drupal7/includes/database/database.inc(1350): DatabaseConnection_mysql->__construct(Array) #3 .../drupal7/includes/database/database.inc(1218): Database::openConnection('default', 'default') #4 .../drupal7/includes/database/database.inc(1793): Database::getConnection('default') #5 .../drupal7/includes/bootstrap.inc(1242): db_query('SELECT 1 FROM {...', Array) -- Edit bug report at http://bugs.php.net/?id=48773&edit=1 -- Try a CVS snapshot (PHP 5.2): http://bugs.php.net/fix.php?id=48773&r=trysnapshot52 Try a CVS snapshot (PHP 5.3): http://bugs.php.net/fix.php?id=48773&r=trysnapshot53 Try a CVS snapshot (PHP 6.0): http://bugs.php.net/fix.php?id=48773&r=trysnapshot60 Fixed in CVS: http://bugs.php.net/fix.php?id=48773&r=fixedcvs Fixed in CVS and need be documented: http://bugs.php.net/fix.php?id=48773&r=needdocs Fixed in release: http://bugs.php.net/fix.php?id=48773&r=alreadyfixed Need backtrace: http://bugs.php.net/fix.php?id=48773&r=needtrace Need Reproduce Script: http://bugs.php.net/fix.php?id=48773&r=needscript Try newer version: http://bugs.php.net/fix.php?id=48773&r=oldversion Not developer issue: http://bugs.php.net/fix.php?id=48773&r=support Expected behavior: http://bugs.php.net/fix.php?id=48773&r=notwrong Not enough info: http://bugs.php.net/fix.php?id=48773&r=notenoughinfo Submitted twice: http://bugs.php.net/fix.php?id=48773&r=submittedtwice register_globals: http://bugs.php.net/fix.php?id=48773&r=globals PHP 4 support discontinued: http://bugs.php.net/fix.php?id=48773&r=php4 Daylight Savings: http://bugs.php.net/fix.php?id=48773&r=dst IIS Stability: http://bugs.php.net/fix.php?id=48773&r=isapi Install GNU Sed: http://bugs.php.net/fix.php?id=48773&r=gnused Floating point limitations: http://bugs.php.net/fix.php?id=48773&r=float No Zend Extensions: http://bugs.php.net/fix.php?id=48773&r=nozend MySQL Configuration Error: http://bugs.php.net/fix.php?id=48773&r=mysqlcfg