Rumah  >  Soal Jawab  >  teks badan

Sambungan PHP gagal: Sambungan SQLSTATE ditolak

<p>Saya cuba menyambung ke pangkalan data MySQL pada phpmyadmin menggunakan sambungan PHP. Tiada apa-apa yang istimewa tentang sambungan, hanya ingin melihat sama ada sambungan itu berjaya. Saya menggunakan MAMP untuk mengehoskan pangkalan data dan sambungan yang saya cuba gunakan ialah ini: </p> <pre class="brush:php;toolbar:false;"><?php $nama pelayan = "127.0.0.1"; $nama pengguna = "root"; $kata laluan = "root"; cuba { $conn = new PDO("mysql:host=$servername;dbname=AppDatabase", $username, $password); // tetapkan mod ralat PDO kepada pengecualian $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); echo "Berjaya disambungkan"; } tangkap(PDOException $e) { echo "Sambungan gagal: " $e->getMessage(); } ?></pra> <p>Saya telah menggunakan Posmen untuk menguji bahawa sambungan berfungsi, tetapi saya terus mendapat mesej ralat ini: </p> <blockquote> <p>Sambungan gagal: SQLSTATE[HY000] [2002] Sambungan ditolak</p> </blockquote> <p>Sebelum saya menerima mesej ralat berikut: </p> <blockquote> <p>Sambungan gagal: SQLSTATE[HY000] [2002] Tiada fail atau direktori sedemikian</p> </blockquote> <p>Ini kerana saya menetapkan nama pelayan kepada localhost dan dengan menukarnya kepada alamat IP ia menyebabkan sambungan ditolak dan saya tidak tahu apa yang berlaku. </p> <p>Sebarang bantuan berkaitan isu ini amat dihargai. </p>
P粉068510991P粉068510991423 hari yang lalu551

membalas semua(2)saya akan balas

  • P粉434996845

    P粉4349968452023-08-24 10:47:03

    Saya sedang berhijrah di docker 环境中度过了相当多的时间,其中我的所有容器都是 docker 容器,并且我使用 Phinx. Hanya untuk berkongsi respons yang berbeza untuk konfigurasi yang berbeza.

    Penyelesaian Bekerja

    "host" => "db", // {docker container's name} Worked
    "host" => "172.22.112.1", // {some docker IP through ipconfig - may change on every instance - usually something like 172.x.x.x} Worked

    Penyelesaian tidak sah

    "host" => "127.0.0.1", // SQLSTATE[HY000] [2002] Connection refused
    "host" => "docker.host.internal", //  SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: Name does not resolve
    "host" => "localhost", //  SQLSTATE[HY000] [2002] No such file or directory

    Saya menjalankannya seperti berikut Phinx.

    docker compose --env-file .env run --rm phinx status -e development

    balas
    0
  • P粉186017651

    P粉1860176512023-08-24 10:10:42

    Saya dapati sebab sambungan tidak berfungsi, ini kerana sambungan cuba disambungkan ke port 8888 apabila ia perlu disambungkan ke port 8889.

    $conn = new PDO("mysql:host=$servername;port=8889;dbname=AppDatabase", $username, $password);

    Ini menyelesaikan masalah, walaupun menukar nama pelayan kepada localhost masih memberi saya ralat.

    Sambungan gagal: SQLSTATE[HY000] [2002] Tiada fail atau direktori sedemikian

    Tetapi apabila memasukkan alamat IP sebagai nama pelayan, ia berjaya menyambung.

    balas
    0
  • Batalbalas