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

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

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

  1. DB_CONNECTION=mysql
  2. DB_HOST=mysql
  3. DB_PORT=3306
  4. DB_DATABASE=ead
  5. DB_USERNAME=root
  6. DB_PASSWORD=root

字符串
docker-compose.yml

  1. mysql:
  2. image: mysql:5.7.22
  3. restart: unless-stopped
  4. environment:
  5. MYSQL_DATABASE: ${DB_DATABASE}
  6. MYSQL_ROOT_PASSWORD: ${DB_PASSWORD}
  7. MYSQL_PASSWORD: ${DB_PASSWORD}
  8. MYSQL_USER: ${DB_USERNAME}
  9. volumes:
  10. - ./.docker/mysql/dbdata:/var/lib/mysql
  11. ports:
  12. - 3388:3306
  13. networks:
  14. - 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看起来像这样:

  1. app: # service name for php-fpm
  2. container_name: php-app
  3. build:
  4. context: ./
  5. dockerfile: app.dockerfile
  6. working_dir: /var/www
  7. volumes:
  8. - ./:/var/www
  9. database: # service name for database
  10. container_name: app-db
  11. image: mariadb:10.6.3
  12. volumes:
  13. - dbdata:/var/lib/mysql
  14. ports:
  15. - "33061:3306"
  16. web: # Nginx service name
  17. container_name: webserver-web
  18. build:
  19. context: ./
  20. dockerfile: web.dockerfile
  21. working_dir: /var/www
  22. volumes_from:
  23. - app
  24. ports:
  25. - "8080:80"

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

  1. cd some/path # root directory where your docker-compose.yml lives
  2. docker-compose exec app /bin/bash
  3. mysql --host=database --port=3306 -u root -proot


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

展开查看全部

相关问题