数据库密码是项目中默认的; 我用Navicat从本机可以连接到服务器的数据库。
[root@iZwz9d8w93w30eiokzks1fZ yii2_fecshop_docker]# docker-compose exec php bash root@5b12795777ee:/var/www/html# cd /www/web/fecshop root@5b12795777ee:/www/web/fecshop# ./yii migrate --interactive=0 --migrationPath=@fecshop/migrations/mysqldb Yii Migration Tool (based on Yii v2.0.15.1)
Exception 'yii\db\Exception' with message 'SQLSTATE[HY000] [2002] Connection refused'
in /www/web/fecshop/vendor/yiisoft/yii2/db/Connection.php:624
Stack trace: #0 /www/web/fecshop/vendor/yiisoft/yii2/db/Connection.php(996): yii\db\Connection->open() #1 /www/web/fecshop/vendor/yiisoft/yii2/db/Connection.php(983): yii\db\Connection->getMasterPdo() #2 /www/web/fecshop/vendor/yiisoft/yii2/db/Command.php(253): yii\db\Connection->getSlavePdo() #3 /www/web/fecshop/vendor/yiisoft/yii2/db/Command.php(1143): yii\db\Command->prepare(true) #4 /www/web/fecshop/vendor/yiisoft/yii2/db/Command.php(399): yii\db\Command->queryInternal('fetchAll', NULL) #5 /www/web/fecshop/vendor/yiisoft/yii2/db/mysql/Schema.php(312): yii\db\Command->queryAll() #6 /www/web/fecshop/vendor/yiisoft/yii2/db/mysql/Schema.php(125): yii\db\mysql\Schema->findColumns(Object(yii\db\TableSchema)) #7 /www/web/fecshop/vendor/yiisoft/yii2/db/Schema.php(744): yii\db\mysql\Schema->loadTableSchema('migration') #8 /www/web/fecshop/vendor/yiisoft/yii2/db/Schema.php(194): yii\db\Schema->getTableMetadata('{{%migration}}', 'schema', true) #9 /www/web/fecshop/vendor/yiisoft/yii2/console/controllers/MigrateController.php(210): yii\db\Schema->getTableSchema('{{%migration}}', true) #10 /www/web/fecshop/vendor/yiisoft/yii2/console/controllers/BaseMigrateController.php(875): yii\console\controllers\MigrateController->getMigrationHistory(NULL) #11 /www/web/fecshop/vendor/yiisoft/yii2/console/controllers/BaseMigrateController.php(166): yii\console\controllers\BaseMigrateController->getNewMigrations() #12 [internal function]: yii\console\controllers\BaseMigrateController->actionUp(0) #13 /www/web/fecshop/vendor/yiisoft/yii2/base/InlineAction.php(57): call_user_func_array(Array, Array) #14 /www/web/fecshop/vendor/yiisoft/yii2/base/Controller.php(157): yii\base\InlineAction->runWithParams(Array) #15 /www/web/fecshop/vendor/yiisoft/yii2/console/Controller.php(148): yii\base\Controller->runAction('', Array) #16 /www/web/fecshop/vendor/yiisoft/yii2/base/Module.php(528): yii\console\Controller->runAction('', Array) #17 /www/web/fecshop/vendor/yiisoft/yii2/console/Application.php(180): yii\base\Module->runAction('migrate', Array) #18 /www/web/fecshop/vendor/yiisoft/yii2/console/Application.php(147): yii\console\Application->runAction('migrate', Array) #19 /www/web/fecshop/vendor/yiisoft/yii2/base/Application.php(386): yii\console\Application->handleRequest(Object(yii\console\Request)) #20 /www/web/fecshop/yii(82): yii\base\Application->run() #21 {main}
报错信息很明显:connection refused
翻译过来就是mysql无法连接,检查一下
1.yii db组件的mysql账户
密码
Ip
等数据库配置是否正确,Fecshop的配置mysql:http://www.fecshop.com/doc/fecshop-guide/develop/cn-1.0/guide-fecshop-about-config.html
第一部分,查看 @common/config/main-local.php中db组件的配置是否正确。
2.如果不是localhost,而是远程连接mysql,查看一下mysql的账户是否有远程连接权限。
学习一下markdown标签:http://www.fecshop.com/markdown
帖子的内容农的整洁一些。语法很简单,掌握6个标签就够用。
// Mysql部分的配置
'db' => [
'class' => 'yii\db\Connection',
'dsn' => 'mysql:host=127.0.0.1;dbname=fecshop',
'username' => 'root',
'password' => 'fecshopxfd3ffaads123456',
'charset' => 'utf8',
],
// Mongodb部分的配置
'mongodb' => [
'class' => 'yii\mongodb\Connection',
# 有账户的配置
//'dsn' => 'mongodb://username:password@localhost:27017/datebase',
# 无账户的配置
'dsn' => 'mongodb://127.0.0.1:27017/fecshop',
# 复制集
//'dsn' => 'mongodb://10.10.10.252:10001/erp,mongodb://10.10.10.252:10002/erp,mongodb://10.10.10.252:10004/erp?replicaSet=terry&readPreference=primaryPreferred',
],
'dsn' => 'mysql:host=127.0.0.1;dbname=fecshop', 这里改成: 'dsn' => 'mysql:host=mysql;dbname=fecshop', 就可以了,不过会提示未知数据库fecshop,要手动创建才行
@zeicool [#6楼](#comment6) 嗯,使用docker compose 安装,你说的是正确的
这个文件里面已经配置了
'db' => [
'class' => 'yii\db\Connection',
'dsn' => 'mysql:host=mysql;dbname=fecshop',
'username' => 'root',
'password' => 'fecshopxfd3ffaads123456',
'charset' => 'utf8',
],
只需要更改 username
和 password
,这个对应docker mysql的配置:https://github.com/fecshop/yii2_fecshop_docker/blob/master/docker-compose.yml
在docker compose 的yml的配置文件可以看到如下(配置mysql root账户的密码):
environment:
- MYSQL_ROOT_PASSWORD=fecshopxfd3ffaads123456
对于数据库:fecshop,在安装文档中有操作步骤,也就是如图,会创建fecshop数据库:
@zeicool #8楼 看一下这个:http://www.fecshop.com/topic/931
解决后回馈下