Laravel 使用 laradock 迁移数据库失败
Laravel database migration failed using laradock
我收到以下错误
[Illuminate\Database\QueryException]
SQLSTATE[HY000] [2002] Connection refused (SQL: select * from information_schema.tables where table_schema = testdb and table_name = migrations)
当我 运行 -
php artisan migrate
我正在 运行在 laradock 工作区上执行此命令。我使用以下命令进入工作区。
docker-compose exec workspace bash
我正在使用 laravel 5.5。我的项目文件夹中有以下方式的 laradock。
+testproject
-Laradock
我的项目 .env (testproject/.env) 文件包含 mysql.
的以下设置
DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=33060
DB_DATABASE=testdb
DB_USERNAME=root
DB_PASSWORD=root
我的 laradock .env(testproject/laradock/.env) 文件包含 mysql.
的以下设置
MYSQL_VERSION=8.0
MYSQL_DATABASE=testdb
MYSQL_USER=default
MYSQL_PASSWORD=secret
MYSQL_PORT=33060
MYSQL_ROOT_PASSWORD=root
MYSQL_ENTRYPOINT_INITDB=./mysql/docker-entrypoint-initdb.d
我的 docker-compose.yml 包含 Mysql 容器
的以下设置
mysql:
build:
context: ./mysql
args:
- MYSQL_VERSION=${MYSQL_VERSION}
environment:
- MYSQL_DATABASE={MYSQL_DATABASE}
- MYSQL_USER={MYSQL_USER}
- MYSQL_PASSWORD={MYSQL_PASSWORD}
- MYSQL_ROOT_PASSWORD={MYSQL_ROOT_PASSWORD}
- TZ=${WORKSPACE_TIMEZONE}
volumes:
- ${DATA_SAVE_PATH}/mysql:/var/lib/mysql
- ${MYSQL_ENTRYPOINT_INITDB}:/docker-entrypoint-initdb.d
ports:
- "${MYSQL_PORT}:3306"
networks:
- backend
Mysql in docker 安装在端口 33060 中。我是第一次尝试 laradock。在尝试了几种配置之后,我正在呼唤复仇者联盟!!!
通过以下 mysql 设置解决了问题。
测试项目/.env:
DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=testdb
DB_USERNAME=root
DB_PASSWORD=root
testproject/laradock/.env:
MYSQL_VERSION=8.0
MYSQL_DATABASE=default
MYSQL_USER=default
MYSQL_PASSWORD=secret
MYSQL_PORT=33060
MYSQL_ROOT_PASSWORD=root
MYSQL_ENTRYPOINT_INITDB=./mysql/docker-entrypoint-initdb.d
testproject/laradock/docker-compose.yml
mysql:
build:
context: ./mysql
args:
- MYSQL_VERSION=${MYSQL_VERSION}
environment:
- MYSQL_DATABASE=${MYSQL_DATABASE}
- MYSQL_USER=${MYSQL_USER}
- MYSQL_PASSWORD=${MYSQL_PASSWORD}
- MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
- TZ=${WORKSPACE_TIMEZONE}
volumes:
- ${DATA_SAVE_PATH}/mysql:/var/lib/mysql
- ${MYSQL_ENTRYPOINT_INITDB}:/docker-entrypoint-initdb.d
ports:
- "${MYSQL_PORT}:3306"
networks:
- backend
我也在laradock文件夹中运行下面两个命令
docker-compose down
docker-compose up -d mysql
我收到以下错误
[Illuminate\Database\QueryException]
SQLSTATE[HY000] [2002] Connection refused (SQL: select * from information_schema.tables where table_schema = testdb and table_name = migrations)
当我 运行 -
php artisan migrate
我正在 运行在 laradock 工作区上执行此命令。我使用以下命令进入工作区。
docker-compose exec workspace bash
我正在使用 laravel 5.5。我的项目文件夹中有以下方式的 laradock。
+testproject
-Laradock
我的项目 .env (testproject/.env) 文件包含 mysql.
的以下设置DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=33060
DB_DATABASE=testdb
DB_USERNAME=root
DB_PASSWORD=root
我的 laradock .env(testproject/laradock/.env) 文件包含 mysql.
的以下设置MYSQL_VERSION=8.0
MYSQL_DATABASE=testdb
MYSQL_USER=default
MYSQL_PASSWORD=secret
MYSQL_PORT=33060
MYSQL_ROOT_PASSWORD=root
MYSQL_ENTRYPOINT_INITDB=./mysql/docker-entrypoint-initdb.d
我的 docker-compose.yml 包含 Mysql 容器
的以下设置mysql:
build:
context: ./mysql
args:
- MYSQL_VERSION=${MYSQL_VERSION}
environment:
- MYSQL_DATABASE={MYSQL_DATABASE}
- MYSQL_USER={MYSQL_USER}
- MYSQL_PASSWORD={MYSQL_PASSWORD}
- MYSQL_ROOT_PASSWORD={MYSQL_ROOT_PASSWORD}
- TZ=${WORKSPACE_TIMEZONE}
volumes:
- ${DATA_SAVE_PATH}/mysql:/var/lib/mysql
- ${MYSQL_ENTRYPOINT_INITDB}:/docker-entrypoint-initdb.d
ports:
- "${MYSQL_PORT}:3306"
networks:
- backend
Mysql in docker 安装在端口 33060 中。我是第一次尝试 laradock。在尝试了几种配置之后,我正在呼唤复仇者联盟!!!
通过以下 mysql 设置解决了问题。
测试项目/.env:
DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=testdb
DB_USERNAME=root
DB_PASSWORD=root
testproject/laradock/.env:
MYSQL_VERSION=8.0
MYSQL_DATABASE=default
MYSQL_USER=default
MYSQL_PASSWORD=secret
MYSQL_PORT=33060
MYSQL_ROOT_PASSWORD=root
MYSQL_ENTRYPOINT_INITDB=./mysql/docker-entrypoint-initdb.d
testproject/laradock/docker-compose.yml
mysql:
build:
context: ./mysql
args:
- MYSQL_VERSION=${MYSQL_VERSION}
environment:
- MYSQL_DATABASE=${MYSQL_DATABASE}
- MYSQL_USER=${MYSQL_USER}
- MYSQL_PASSWORD=${MYSQL_PASSWORD}
- MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
- TZ=${WORKSPACE_TIMEZONE}
volumes:
- ${DATA_SAVE_PATH}/mysql:/var/lib/mysql
- ${MYSQL_ENTRYPOINT_INITDB}:/docker-entrypoint-initdb.d
ports:
- "${MYSQL_PORT}:3306"
networks:
- backend
我也在laradock文件夹中运行下面两个命令
docker-compose down
docker-compose up -d mysql