Undefined constante de classe 'MYSQL_ATTR_INIT_COMMAND' avec pdo
$db = new PDO('mysql:dbname=xnews;host=localhost;port=' . $LOCAL_DB_PORT,
$LOCAL_DB_USER,
$LOCAL_DB_PASS,
array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'UTF8'")
);
rapports:
Undefined constante de classe
'MYSQL_ATTR_INIT_COMMAND'
Est-il renommé?
- Semble être un bug de PHP5.3...
- C'est un bug: bugs.php.net/47224
- Tout le temps de vous mettre à jour PHP, assurez-vous de sauvegarder votre php.ini. Sur windows, vous pourriez avoir un nouveau répertoire PHP. Si c'est juste une version mineure / patch pour PHP, une copie sur votre précédent php.ini. Si vous décidez de changer de versions, de comparer l'ancienne et la nouvelle version de php.ini pour voir ce que les extensions et les paramètres que vous voudrez peut-être garder / transfert à la nouvelle version de php.fichier ini.
Vous devez vous connecter pour publier un commentaire.
J'ai juste eu le même message d'erreur (avec PHP 5.2.6), et tout ce que j'avais à faire est de activer le spécifique à MySQL driver PDO:
TL;DR
Dans votre
php.ini
fichier, vous devez avoir la ligne suivante (sans commentaire):extension=php_pdo_mysql.dll
sur Windowsextension=php_pdo_mysql.so
sur Linux/MacUne longue explication:
ouvrir
php.ini
dans un éditeur de texteC:\Program Files (x86)\PHP\v5.X\php.ini
(substitut v5.x avec la version que vous avez installé) ouC:\Windows\php.ini
, etc./etc/php5/apache2/php.ini
(par exemple, c'est le chemin sur Ubuntu) ou/etc/php5/cli/php.ini
,/etc/php5/cgi/php.ini
, etc.php --ini | find /i "Loaded"
dans l'invite de commande de Windows OUphp --ini | grep "Loaded"
dans Linux/Mac terminalphpinfo()
, et la recherche de la ligne "Charger le Fichier de Configuration"et supprimez le point-virgule à partir du début de la ligne suivante (décommenter il):
;extension=php_pdo_mysql.dll
sur Windows;extension=php_pdo_mysql.so
sur Linux/Macphp.ini
:extension=php_pdo_mysql.dll
sur Windowsextension=php_pdo_mysql.so
sur Linux/MacVous devrez peut-être redémarrer votre serveur web.
Qui a résolu mon problème.
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php/20151012/php_pdo_mysql.so' - /usr/lib/php/20151012/php_pdo_mysql.so: cannot open shared object file: No such file or directory in Unknown on line 0
J'ai eu la même erreur, sur debian6, quand je n'avais pas encore installé
php5-mysql
.Donc je l'ai installé, puis redémarré apache2
Alors l'erreur a disparu.
Si vous avez le même message d'erreur sur Ubuntu, au lieu de:
Type:
Il semble seulement être disponibles à l'aide de la mysqlnd pilote.
Essayer de la remplacer par l'entier qu'elle représente; 1002, si je ne me trompe pas.
Pour Centos j'ai été absent php-mysql bibliothèque:
Il n'est pas nécessaire d'activer l'extension php.ini, il est chargé par défaut.
J'ai juste essayé avec PHP 5.2, et cette constante, semble existe :
Me donne :
Mais il semble y avoir un bug dans PHP 5.3, qui sont les causes de cette constante n'existe pas plus -- ou, au moins, pas quand la mysqlnd pilote est utilisé (et c'est celui qui est configuré par défaut)
Je suppose qu'une solution temporaire, comme l'a suggéré sur ce rapport de bug, pourrait être d'utiliser directement l'entier
1002
valeur, au lieu de la constante...Mais notez que vous devez revenir en arrière à l'aide de la constante dès que possible, car cela rend le code plus facile à comprendre.
Pour moi, il manquait MySQL PDO, j'ai recompilé mon PHP avec le
--with-pdo-mysql
option, installé et redémarré apache, et c'était tout ce travailVous pourriez essayer de la remplacer par 1002 ou de l'émission de votre initialisation de la requête à droite après l'ouverture de la connexion.
J'ai eu cette erreur ce matin, je viens de faire une nouvelle installation de Fedora 14 et a essayé de faire mes projets locaux de nouveau en ligne. J'ai été absent php-mysql, je l'ai installé via yum et l'erreur a disparu.
À l'aide de la valeur int
1002
semble fonctionner pour PHP 5.3.0:Cela est dû à un PHP 5.3.0 bug sur Windows où MYSQL_ATTR_INIT_COMMAND n'est pas disponible. Le PHP rapport de bug est:
http://bugs.php.net/bug.php?id=47224
Si vous rencontrez ce, veuillez mettre à jour votre WAMP produit pour une version qui utilise PHP 5.3.1 ou version ultérieure.