当我运行(Laravel 6)时,php artisan migrate我似乎无法连接到数据库并出现错误:
Illuminate\\Database\\QueryException : SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: nodename nor servname provided, or not known (SQL: select * from information_schema.tables where table_schema = finance_app and table_name = migrations and table_type = \'BASE TABLE\')\n\n at /Users/robertrocha/Documents/finance_app/system/finance_app/vendor/laravel/framework/src/Illuminate/Database/Connection.php:665\nRun Code Online (Sandbox Code Playgroud)\n\n....\n 异常跟踪:
\n\n 1 PDOException::("PDO::__construct(): php_network_getaddresses: getaddrinfo failed: nodename nor servname provided, or not known")\n /Users/robertrocha/Documents/finance_app/system/finance_app/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:70\n\n 2 PDO::__construct("mysql:host=db;port=3306;dbname=finance_app", "root", "password", [])\n /Users/robertrocha/Documents/finance_app/system/finance_app/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:70\n\n Please use the argument -v to see more details.\nRun Code Online (Sandbox Code Playgroud)\n\n我的设置:\nYaml:
\n\nversion: \'3.3\'\n\nservices:\n backend:\n build:\n context: laravel\n depends_on:\n - db\n image: php-apache-laravel\n ports:\n - "10000:80"\n restart: unless-stopped\n volumes:\n - ./system:/var/www/html\n environment:\n DB_HOST: db\n DB_PORT: 3306\n DB_USERNAME: root\n DB_PASSWORD: password\n DB_DATABASE: finance_app\n db:\n image: mysql:5.7\n environment:\n MYSQL_ROOT_PASSWORD : password\n MYSQL_DATABASE: finance_app\n MYSQL_USER: root\n MYSQL_PASSWORD: password\n volumes:\n - db_data:/var/lib/mysql\n restart: unless-stopped\nvolumes:\n db_data: {}\nRun Code Online (Sandbox Code Playgroud)\n\n首先,我阅读了有关将主机更改为 yaml 文件所具有的主机的其他答案,并执行了该操作。但似乎并没有解决问题。\nLaravel .env
\n\nDB_CONNECTION=mysql\nDB_HOST=db\nDB_PORT=3306\nDB_DATABASE=finance_app\nDB_USERNAME=root\nDB_PASSWORD=password\nRun Code Online (Sandbox Code Playgroud)\n\n通过命令行我连接没有问题:
\n\nRoberts-Air:finance_app robertrocha$ docker ps\nCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES\n1bb6f2d30d8a php-apache-laravel "docker-php-entrypoi\xe2\x80\xa6" 4 minutes ago Up 2 minutes 0.0.0.0:10000->80/tcp finance_app_backend_1\n8b6c33d4a74f mysql:5.7 "docker-entrypoint.s\xe2\x80\xa6" 4 minutes ago Up 2 minutes 3306/tcp, 33060/tcp finance_app_db_1\n\n\nRoberts-Air:finance_app robertrocha$ docker exec -it finance_app_db_1 bash\nroot@8b6c33d4a74f:/# mysql -u root -p\nEnter password: \nWelcome to the MySQL monitor. Commands end with ; or \\g.\nYour MySQL connection id is 2\nServer version: 5.7.28 MySQL Community Server (GPL)\n\nCopyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.\n\nOracle is a registered trademark of Oracle Corporation and/or its\naffiliates. Other names may be trademarks of their respective\nowners.\n\nType \'help;\' or \'\\h\' for help. Type \'\\c\' to clear the current input statement.\n\nmysql> show databases;\n+--------------------+\n| Database |\n+--------------------+\n| information_schema |\n| LaravelPOS |\n| finance_app |\n| mysql |\n| performance_schema |\n| sys |\n+--------------------+\n6 rows in set (0.01 sec)\n\nmysql> \nRun Code Online (Sandbox Code Playgroud)\n\n任何帮助理解和解决问题的帮助将不胜感激。
\n经过一些研究和思考后,问题是我不是从容器内部运行迁移命令,而是从外部运行。
这是我所做的:
root@1bb6f2d30d8a:/var/www/html#它起作用了
Migration table created successfully.
Migrating: 2014_10_12_000000_create_users_table
Migrated: 2014_10_12_000000_create_users_table (0.07 seconds)
Migrating: 2014_10_12_100000_create_password_resets_table
Migrated: 2014_10_12_100000_create_password_resets_table (0.06 seconds)
Migrating: 2019_08_19_000000_create_failed_jobs_table
Migrated: 2019_08_19_000000_create_failed_jobs_table (0.03 seconds)
Migrating: 2019_11_25_012607_create_cateagories_table
Migrated: 2019_11_25_012607_create_cateagories_table (0.04 seconds)
root@1bb6f2d30d8a:/var/www/html/finance_app#
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2020 次 |
| 最近记录: |