【问题标题】:failed to connect with MySql database on docker无法连接 docker 上的 MySql 数据库
【发布时间】:2020-11-09 12:04:26
【问题描述】:

我正在尝试将 CodeIgniter 4 连接到 docker 上的 Mysql 但失败,错误消息是 无法连接到数据库

docker.yml 文件:

version: '3'

services:
  db:
    image: mysql/mysql-server:8.0
    ports:
        - "42313:3306"
    volumes: 
      - ./db_data:/var/lib/mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: 123
      MYSQL_DATABASE: dbase
      MYSQL_USER: user1
      MYSQL_PASSWORD: user1
  
  wordpress:
    depends_on:
      - db
    image: wordpress:latest
    ports:
      - "8080:80"
    restart: always
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_USER: user1
      WORDPRESS_DB_PASSWORD: user1
      WORDPRESS_DB_NAME: dbase

  marketplace:
    build: ./mycodeIgnitor
    volumes: 
      - ./mycodeIgnitor:/var/www/html/
    depends_on:
       - db
    restart: always
    links:
      - db:mysql
    ports:
      - "8000:80"

volumes:
    db_data:


mycodeIgnitor中App/Config/Database中的数据库配置

public $default = [
        'DSN'      => '',
        'hostname' => 'localhost',
        'username' => 'root',
        'password' => '123',
        'database' => 'dbase',
        'DBDriver' => 'MySQLi',
        'DBPrefix' => '',
        'pConnect' => TRUE,
        'DBDebug'  => TRUE,
        'cacheOn'  => false,
        'cacheDir' => '',
        'charset'  => 'utf8',
        'DBCollat' => 'utf8_general_ci',
        'swapPre'  => '',
        'encrypt'  => false,
        'compress' => false,
        'strictOn' => false,
        'failover' => [],
        'port'     => 3306,
    ];

如何连接到控制器文件中的数据库

        $db = \Config\Database::connect();
        echo  !$db;
        $query = $db->query('SELECT * FROM wp_users');
        $results = $query->getResult();

        foreach ($results as $row)
        {
                print_r(row);
        }

错误消息是无法连接到数据库,如果您能发现我的错误,请告诉我。谢谢。

【问题讨论】:

  • 在 CI4 中有两种设置数据库配置的方法,Database.php 文件和.env 文件。请记住,.env 文件将始终接管 php 文件。所以首先,查看.env 文件并检查数据库配置是否已被注释掉或未设置。
  • 我已经在 .env 文件中注释掉了数据库配置

标签: php mysql docker codeigniter-4


【解决方案1】:

好的,我希望这可以帮助其他人。因此,在 docker 中,docker-compose.yml 中的服务名称成为内部主机名。因此,主机名应改为“db”。

【讨论】:

    猜你喜欢
    • 2020-10-28
    • 2017-11-18
    • 1970-01-01
    • 1970-01-01
    • 2020-01-14
    • 2018-10-29
    • 2020-03-12
    • 1970-01-01
    • 2020-10-25
    相关资源
    最近更新 更多