簡體   English   中英

無法在本地環境中使用 docker 連接到 cakephp 中的 mysql 數據庫

[英]Can`t connect to mysql database in cakephp in a local environment with docker

I set up an local enviroment with mysql, phpmyadmin, php and mailhog and I`m not able to connect to the database with CakePhp.

我在 config/app.php 中的連接數據:

'default' => [
          'className' => 'Cake\Database\Connection',
        'driver' => 'Cake\Database\Driver\Mysql',
        'persistent' => false,
        'host' => '172.21.0.4', => I tried localhost, mysql, 172.0.0.1 as well...
        'username' => 'root',
        'password' => 'root',
        'database' => 'mydb1',
        'encoding' => 'utf8mb4',
        'timezone' => 'UTC',
        'cacheMetadata' => true,
        'flags' => [],
        'log' => false,

我去 http://localhost/ 時遇到的錯誤

當我通過 mysqli_connect() (直接在 config/app.php 中)測試連接時,它工作正常:

$link = mysqli_connect("mysql", "root", "root",'mydb1',"3306",'');

if (!$link) {
echo "Error: Unable to connect to MySQL." . PHP_EOL;
echo "Debugging errno: " . mysqli_connect_errno() . PHP_EOL;
echo "Debugging error: " . mysqli_connect_error() . PHP_EOL;
exit;
}

echo "Success: A proper connection to MySQL was made!" . PHP_EOL;
echo "Host information: " . mysqli_get_host_info($link) . PHP_EOL;

$query = "SELECT * FROM test";
$result = mysqli_query($link, $query) or die(mysqli_error($link));
$flag = FALSE;

while ($row = mysqli_fetch_array($result, MYSQLI_BOTH)) 
{
    echo $row['test']."<br>";
}

mysqli_close($link);

非常感謝! 來自奧地利的問候!

首先,確保您沒有使用 app_local.php 配置文件。

如果您使用 docker,則使用與 db 服務相同的主機名

Docker 組成

services:
      db:
        platform: linux/x86_64
        image: mysql:5.7

app.php

'Datasources' => [
    'default' => [
        'host' => 'db', //<------------------

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM