无法在本地环境中使用 docker 连接到 cakephp 中的 mysql 数据库

Posted

技术标签:

【中文标题】无法在本地环境中使用 docker 连接到 cakephp 中的 mysql 数据库【英文标题】:Can`t connect to mysql database in cakephp in a local environment with docker 【发布时间】:2022-01-20 10:23:56 【问题描述】:

我使用 mysqlphpmyadmin、php 和 mailhog 设置了本地环境,但无法使用 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,

当我通过 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);

非常感谢! 来自奥地利的问候!

【问题讨论】:

您能否详细说明使用mysqli_connect() 进行的测试?你从哪里运行这个以及如何运行? 【参考方案1】:

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

如果您使用 docker,则使用与 db 服务相同的主机名

Docker 编写

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

app.php

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

【讨论】:

我忽略了我正在使用 app_local.php。做到了!非常感谢!

以上是关于无法在本地环境中使用 docker 连接到 cakephp 中的 mysql 数据库的主要内容,如果未能解决你的问题,请参考以下文章

无法从 Spring Boot Docker 容器连接到本地 MySQL 数据库服务器

无法从Spring Boot Docker容器连接到本地MySQL数据库服务器

在 dockerized 环境中无法从 Flask 连接到 Kafka

无法从本地连接到 mysql docker

docker-compose 中的“无法连接到本地 MySQL 服务器”

无法连接到在本地 Docker 容器中运行的 Go GRPC 服务器