ID: 47224 Comment by: daniz at rocketmail dot com Reported By: contact at joycebabu dot com Status: Assigned Bug Type: PDO related Operating System: Windows PHP Version: 5.3.0alpha3 Assigned To: mysql New Comment:
Looking into /ext/pdo_mysql/pdo_mysql.c I saw this: /* {{{ PHP_MINIT_FUNCTION */ static PHP_MINIT_FUNCTION(pdo_mysql) { #if PDO_USE_MYSQLND REGISTER_INI_ENTRIES(); #endif REGISTER_PDO_CLASS_CONST_LONG("MYSQL_ATTR_USE_BUFFERED_QUERY", (long)PDO_MYSQL_ATTR_USE_BUFFERED_QUERY); REGISTER_PDO_CLASS_CONST_LONG("MYSQL_ATTR_LOCAL_INFILE", (long)PDO_MYSQL_ATTR_LOCAL_INFILE); #ifndef PDO_USE_MYSQLND REGISTER_PDO_CLASS_CONST_LONG("MYSQL_ATTR_MAX_BUFFER_SIZE", (long)PDO_MYSQL_ATTR_MAX_BUFFER_SIZE); REGISTER_PDO_CLASS_CONST_LONG("MYSQL_ATTR_INIT_COMMAND", (long)PDO_MYSQL_ATTR_INIT_COMMAND); REGISTER_PDO_CLASS_CONST_LONG("MYSQL_ATTR_READ_DEFAULT_FILE", (long)PDO_MYSQL_ATTR_READ_DEFAULT_FILE); REGISTER_PDO_CLASS_CONST_LONG("MYSQL_ATTR_READ_DEFAULT_GROUP", (long)PDO_MYSQL_ATTR_READ_DEFAULT_GROUP); REGISTER_PDO_CLASS_CONST_LONG("MYSQL_ATTR_COMPRESS", (long)PDO_MYSQL_ATTR_COMPRESS); #endif REGISTER_PDO_CLASS_CONST_LONG("MYSQL_ATTR_DIRECT_QUERY", (long)PDO_MYSQL_ATTR_DIRECT_QUERY); REGISTER_PDO_CLASS_CONST_LONG("MYSQL_ATTR_FOUND_ROWS", (long)PDO_MYSQL_ATTR_FOUND_ROWS); REGISTER_PDO_CLASS_CONST_LONG("MYSQL_ATTR_IGNORE_SPACE", (long)PDO_MYSQL_ATTR_IGNORE_SPACE); #ifdef PDO_USE_MYSQLND pdo_mysqlnd_zval_cache = mysqlnd_palloc_init_cache(PDO_MYSQL_G(cache_size)); #endif return php_pdo_register_driver(&pdo_mysql_driver); } Meaning in short: if not defined "PDO_USE_MYSQLND" - REGISTER_PDO_CLASS_CONST_LONG("MYSQL_ATTR_INIT_COMMAND", (long)PDO_MYSQL_ATTR_INIT_COMMAND); else don't register that class? Does it's supposed to come from somewhere else? I just moved the init_command into a simple query("SET NAMES utf8"); to get rid of the error. Previous Comments: ------------------------------------------------------------------------ [2009-05-22 04:06:55] christian dot gahlert at web dot de Hi, I just had the same problem. It occured because I installed the PDO extension via pecl but forgot to also install PDO_MYSQL. After I installed the PDO_MYSQL everything was fine. I hope I could save someone some time :) Chris ------------------------------------------------------------------------ [2009-04-25 15:35:53] j...@php.net For some reason this (and some other) constants are only available when mysqlnd driver is used. ------------------------------------------------------------------------ [2009-01-27 12:33:45] contact at joycebabu dot com Description: ------------ The constant PDO::MYSQL_ATTR_INIT_COMMAND is not available. Reproduce code: --------------- try { $pdbo = new PDO("mysql:host=localhost;dbname=test", 'root', '', array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8")); }catch(PDOException $e){ echo $e->getMessage(); } Expected result: ---------------- A successful connection to the mysql database Actual result: -------------- Fatal error: Undefined class constant 'MYSQL_ATTR_INIT_COMMAND' in D:\Projects\Apache\htdocs\mysite.com\httpdocs\include\define-vars.inc.php on line 23 ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=47224&edit=1