问题描述
我尝试在 macOS BigSur 中使用 docker 运行一个 yii2 基本项目。这是我的 docker-compose.yml:
version: '2'
services:
PHP:
image: yiisoftware/yii2-PHP:7.4-apache
volumes:
- ~/.composer-docker/cache:/root/.composer/cache:delegated
- ./:/app:delegated
ports:
- '8000:80'
MysqLdb:
image: MysqL
ports:
- 3306:3306
environment:
- MysqL_ROOT_PASSWORD=p@ssw0rd1
- MysqL_DATABASE=yii2basic
<?PHP
return [
'class' => 'yii\db\Connection','dsn' => 'MysqL:host=MysqLdb;port=3306;dbname=yii2basic','username' => 'root','password' => 'p@ssw0rd1','charset' => 'utf8',// Schema cache options (for production environment)
//'enableSchemaCache' => true,//'schemaCacheDuration' => 60,//'schemaCache' => 'cache',];
我使用与 yii2 advanced 中相同的文件夹迁移。当我运行命令 ./yii migrate 时,出现错误“Exception 'yii\db\Exception' with message 'sqlSTATE[HY000] [2002] PHP_network_getaddresses: getaddrinfo Failed: nodename nor servname provided,or not kNown” “发生了。我做错了什么? 我在互联网上尝试了很多东西,但不明白这一点。而不是解决我的问题。 --> How fix the error Exception when execute yii migrate?
PHP yii migrate
Yii Migration Tool (based on Yii v2.0.42-dev)
Exception 'yii\db\Exception' with message 'sqlSTATE[HY000] [2002] PHP_network_getaddresses: getaddrinfo Failed: nodename nor servname provided,or not kNown'
in /Users/danielz3/PHPstormProjects/Portfoleo/vendor/yiisoft/yii2/db/Connection.PHP:651
Error Info:
Array
(
[0] => HY000
[1] => 2002
[2] => PHP_network_getaddresses: getaddrinfo Failed: nodename nor servname provided,or not kNown
)
Caused by: Exception 'PDOException' with message 'sqlSTATE[HY000] [2002] PHP_network_getaddresses: getaddrinfo Failed: nodename nor servname provided,or not kNown'
in /Users/danielz3/PHPstormProjects/Portfoleo/vendor/yiisoft/yii2/db/Connection.PHP:721
Caused by: Exception 'PDOException' with message 'PDO::__construct(): PHP_network_getaddresses: getaddrinfo Failed: nodename nor servname provided,or not kNown'
in /Users/danielz3/PHPstormProjects/Portfoleo/vendor/yiisoft/yii2/db/Connection.PHP:721
Stack trace:
#0 /Users/danielz3/PHPstormProjects/Portfoleo/vendor/yiisoft/yii2/db/Connection.PHP(721): PDO->__construct('MysqL:host=mysq...','root','p@ssw0rd1',NULL)
#1 /Users/danielz3/PHPstormProjects/Portfoleo/vendor/yiisoft/yii2/db/Connection.PHP(640): yii\db\Connection->createPdoInstance()
#2 /Users/danielz3/PHPstormProjects/Portfoleo/vendor/yiisoft/yii2/db/Connection.PHP(1063): yii\db\Connection->open()
#3 /Users/danielz3/PHPstormProjects/Portfoleo/vendor/yiisoft/yii2/db/Connection.PHP(1050): yii\db\Connection->getMasterPdo()
#4 /Users/danielz3/PHPstormProjects/Portfoleo/vendor/yiisoft/yii2/db/Command.PHP(261): yii\db\Connection->getSlavePdo()
#5 /Users/danielz3/PHPstormProjects/Portfoleo/vendor/yiisoft/yii2/db/Command.PHP(1163): yii\db\Command->prepare(true)
#6 /Users/danielz3/PHPstormProjects/Portfoleo/vendor/yiisoft/yii2/db/Command.PHP(410): yii\db\Command->queryInternal('fetchAll',NULL)
#7 /Users/danielz3/PHPstormProjects/Portfoleo/vendor/yiisoft/yii2/db/MysqL/Schema.PHP(319): yii\db\Command->queryAll()
#8 /Users/danielz3/PHPstormProjects/Portfoleo/vendor/yiisoft/yii2/db/MysqL/Schema.PHP(125): yii\db\MysqL\Schema->findColumns(Object(yii\db\TableSchema))
#9 /Users/danielz3/PHPstormProjects/Portfoleo/vendor/yiisoft/yii2/db/Schema.PHP(758): yii\db\MysqL\Schema->loadTableSchema('migration')
#10 /Users/danielz3/PHPstormProjects/Portfoleo/vendor/yiisoft/yii2/db/Schema.PHP(194): yii\db\Schema->getTableMetadata('{{%migration}}','schema',true)
#11 /Users/danielz3/PHPstormProjects/Portfoleo/vendor/yiisoft/yii2/console/controllers/MigrateController.PHP(211): yii\db\Schema->getTableSchema('{{%migration}}',true)
#12 /Users/danielz3/PHPstormProjects/Portfoleo/vendor/yiisoft/yii2/console/controllers/BaseMigrateController.PHP(894): yii\console\controllers\MigrateController->getMigrationHistory(NULL)
#13 /Users/danielz3/PHPstormProjects/Portfoleo/vendor/yiisoft/yii2/console/controllers/BaseMigrateController.PHP(169): yii\console\controllers\BaseMigrateController->getNewMigrations()
#14 [internal function]: yii\console\controllers\BaseMigrateController->actionUp(0)
#15 /Users/danielz3/PHPstormProjects/Portfoleo/vendor/yiisoft/yii2/base/InlineAction.PHP(57): call_user_func_array(Array,Array)
#16 /Users/danielz3/PHPstormProjects/Portfoleo/vendor/yiisoft/yii2/base/Controller.PHP(181): yii\base\InlineAction->runWithParams(Array)
#17 /Users/danielz3/PHPstormProjects/Portfoleo/vendor/yiisoft/yii2/console/Controller.PHP(184): yii\base\Controller->runAction('',Array)
#18 /Users/danielz3/PHPstormProjects/Portfoleo/vendor/yiisoft/yii2/base/Module.PHP(534): yii\console\Controller->runAction('',Array)
#19 /Users/danielz3/PHPstormProjects/Portfoleo/vendor/yiisoft/yii2/console/Application.PHP(181): yii\base\Module->runAction('migrate',Array)
#20 /Users/danielz3/PHPstormProjects/Portfoleo/vendor/yiisoft/yii2/console/Application.PHP(148): yii\console\Application->runAction('migrate',Array)
#21 /Users/danielz3/PHPstormProjects/Portfoleo/vendor/yiisoft/yii2/base/Application.PHP(392): yii\console\Application->handleRequest(Object(yii\console\Request))
#22 /Users/danielz3/PHPstormProjects/Portfoleo/yii(20): yii\base\Application->run()
#23 {main}
解决方法
我使用这个命令解决了我的问题。我不知道为什么,但解决了。 (我猜我正在使用 docker 端)。
docker-compose run --rm php yii migrate