PHP PDO bağlantı oluşturma hata

5 Cevap php

Bugün, ben çıkarılır ve 5,30 php geçmek için lampp en son sürümünü yeniden ve aniden çok basit bir uygulama mysql veritabanına bağlanmak için başarısız oluyor. Ben bağlamak için PDO kullanarak ve aşağıdaki hatayı alıyorum:

Warning: PDO::__construct() [pdo.--construct]: [2002] Invalid argument (trying to connect 
via unix://) in /home/raistlin/www/todoapp/home.php on line 9

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000] [2002]
Invalid argument' in /home/raistlin/www/todoapp/home.php:9 Stack trace: #0
/home/raistlin/www/todoapp/home.php(9): PDO->__construct('mysql:host=loca...', 'USER', 
'PASSWORD') #1 {main} thrown in /home/raistlin/www/todoapp/home.php on line 9

Ben hata ayıklama uğruna, şu anda hata yakalama değilim.

Aşağıdaki kod benim sistem sorunu çoğaltmak için yeterli:

<?php
$DBACCESS = array(
    "connstring"=>"mysql:host=localhost;dbname=todoapp",
    "host"=>"localhost",
    "user"=>"user",
    "password"=>"password",
    "todoapp"=>"todoapp"
    );

    echo implode('<br \>',$DBACCESS);

    $dbh = new PDO($DBACCESS['connstring'],$DBACCESS['user'],$DBACCESS['password']);

    $dbh = null;
?>

Online baktığımda, aynı konu ile diğer bir veya iki kişiyi bulduk, ama bunların hiçbiri bir çalışma bir çok daha az, bir yanıt aldık. Herkes neler olduğunu biliyor mu? Ben yapılandırmada cevapsız bir şey var mı? Ne ben bunu düzeltmek için ne yapmak gerekiyor?

5 Cevap

Genellikle (1) TCP / IP belirtmek, ya da Unix soket (2) olduğu MySQL söylemek gerekir anlamına gelir:

  1. "Mysql: host = 127.0.0.1" veya "mysql: host = localhost; port = 3306"
  2. "Mysql: unix_socket = / var / run / mysqld / mysqld.sock"

Ayrıca tamamen bu sorunu önlemek için db bağlantı dizesi yerine "localhost" belirterek daha 127.0.0.1 kullanabilirsiniz.

PDO pdo_mysql.default_socket = /opt/lampp/var/mysql/mysql.sock (xampp durumunda) belirterek mysql.sock bulabilirsiniz böylece php.ini değiştirmek isteyebilirsiniz. Php.ini değiştirdikten sonra Apache yeniden unutmayın.

(Maalesef, bu bir tekrarlanan bir çözüm gibi görünüyor).

Ben bu proje için Doktrini ile MAMP 2.0.1 ve Symfony 1.4 kullanıyorum.

Third option worked for me with a small modification: in /config/databases.yml

dsn: 'mysql:unix_socket=/Applications/MAMP/tmp/mysql/mysql.sock;dbname=MY_DB_NAME;'

Böyle bir hata en yaygın nedeni mysql çalışmıyor olacaktır.