mysql 错误docker laravel - SQLSTATE[HY 000] [1049] Unknown database 'ead'

nuypyhwy  于 2023-11-16  发布在  Mysql
关注(0)|答案(1)|浏览(195)

我正在用laravel对一个docker项目做一些调整,但我遇到了以下问题:SQLSTATE[HY 000] [1049] Unknown database 'ead'。这很奇怪,因为我已经创建了数据库,每次我使用命令:php artisan migrate我都会得到这个错误。请查看我的.env文件:

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

字符串
docker-compose.yml

mysql:
      image: mysql:5.7.22
      restart: unless-stopped
      environment:
          MYSQL_DATABASE: ${DB_DATABASE}
          MYSQL_ROOT_PASSWORD: ${DB_PASSWORD}
          MYSQL_PASSWORD: ${DB_PASSWORD}
          MYSQL_USER: ${DB_USERNAME}
       volumes:
           - ./.docker/mysql/dbdata:/var/lib/mysql
       ports:
           - 3388:3306
         networks:
           - laravel-eti


我开始使用sail,但问题仍然存在。出现了一个新的问题:“SQLSTATE[HY 000] [1049] Unknown database 'laravel_ead'(SQL:select * from information_schema.tables where table_schema = laravel_ead and table_name = migrations and table_type = 'BASE TABLE')”
但是当我访问phpmyadmin时,如果我使用命令:“docker exec -it laravel-api-ead-mysql-1 mysql -u root -p”,然后显示数据库;我的手指银行是:
数据库|+--+|信息模式||MySQL||you_db||性能模式|
| sys我的银行在phpmyadmin不出现
我的mysql docker不工作:x1c 0d1x
我在这里寻找一些答案的帮助,但没有帮助

bfnvny8b

bfnvny8b1#

在没有看到Docker配置的情况下,很难给予一个明确的答案,但一个建议是确保DB_HOST的值与包含数据库的Docker服务的名称匹配。例如,如果您的docker-compose.yml看起来像这样:

app: # service name for php-fpm
    container_name: php-app
    build:
      context: ./
      dockerfile: app.dockerfile
    working_dir: /var/www
    volumes:
      - ./:/var/www

  database: # service name for database
    container_name: app-db
    image: mariadb:10.6.3
    volumes:
      - dbdata:/var/lib/mysql
    ports:
        - "33061:3306"

  web: # Nginx service name
    container_name: webserver-web
    build:
      context: ./
      dockerfile: web.dockerfile
    working_dir: /var/www
    volumes_from:
      - app
    ports:
      - "8080:80"

字符串
然后在我的.env中,我将使用DB_HOST=database。这是可能的,因为Docker使所有相关容器的服务名称都可以作为彼此之间的主机名。
一种验证方法是,假设你的Docker结构是类似的,你可以对运行PHP的服务容器启动一个bash shell,并尝试直接建立数据库连接。

cd some/path # root directory where your docker-compose.yml lives

docker-compose exec app /bin/bash

mysql --host=database --port=3306 -u root -proot


我的建议是在黑暗中拍摄,但希望这里的东西会让你更接近找到你的答案。

相关问题