首页 > 解决方案 > 使用 Laravel 帆创建测试数据库

问题描述

我正在尝试为我使用 Laravel 和 Sail 创建一个测试数据库。在这篇文章之后,我更新了我的 docker-compose 文件:

    mysql:
        image: 'mysql:8.0'
        ports:
            - '${FORWARD_DB_PORT:-3306}:3306'
        environment:
            MYSQL_ROOT_PASSWORD: '${DB_PASSWORD}'
            MYSQL_DATABASE: '${DB_DATABASE}'
            MYSQL_USER: '${DB_USERNAME}'
            MYSQL_PASSWORD: '${DB_PASSWORD}'
            MYSQL_ALLOW_EMPTY_PASSWORD: 'yes'
        volumes:
            - 'sailmysql:/var/lib/mysql'
        networks:
            - sail
        healthcheck:
          test: ["CMD", "mysqladmin", "ping"]
    mysql_test:
      image: "mysql:8.0"
      environment:
        MYSQL_ROOT_PASSWORD: "${TEST_DB_PASSWORD}"
        MYSQL_DATABASE: "${TEST_DB_DATABASE}"
        MYSQL_USER: "${TEST_DB_USERNAME}"
        MYSQL_PASSWORD: "${TEST_DB_PASSWORD}"
        MYSQL_ALLOW_EMPTY_PASSWORD: "yes"
      networks:
        - sail

在我的 .env 文件中,我有:

DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=real_database
DB_USERNAME=root
DB_PASSWORD=root

TEST_DB_CONNECTION=mysql
TEST_DB_HOST=mysql_test
TEST_DB_PORT=3306
TEST_DB_DATABASE=test_database
TEST_DB_USERNAME=root
TEST_DB_PASSWORD=root

但是,当我扬帆起航时,我得到:

mysql_test_1    | 2021-03-13 17:18:10+00:00 [Note] [Entrypoint]: Creating database test_database
mysql_test_1    | 2021-03-13 17:18:10+00:00 [Note] [Entrypoint]: Creating user root
mysql_test_1    | ERROR 1396 (HY000) at line 1: Operation CREATE USER failed for 'root'@'%'

关于为什么构建失败的任何想法?

标签: laraveldocker

解决方案


您的用户名不能是 root, 中已经有一个 root 用户MySql,所以当您插入您的用户时,它已经存在。

DB_USERNAME=youruser
DB_PASSWORD=password

TEST_DB_USERNAME=testuser
TEST_DB_PASSWORD=testpassword

推荐阅读