web/index.php参数fecmall_common_main_local_config 影响数据库主从配置

bug问题 · cqslxz · 于 1年前 发布 · 824 次阅读

我不知道有没有人报告过项目中web/index.php(index.php链接) 里面参数“$fecmall_common_main_local_config" 将会影响mysql数据库主从配置, 配置主从后会报告如下错误:

24243#24243: *268308 FastCGI sent in stderr: "PHP message: PHP Fatal error:  Uncaught Error: Call to a member function get() on null in /html/vendor/yiisoft/yii2/db/Connection.php:1190
Stack trace:
#0 /html/vendor/yiisoft/yii2/db/Connection.php(1155): yii\db\Connection->openFromPoolSequentially(Array, Array)
#1 /html/vendor/yiisoft/yii2/db/Connection.php(1077): yii\db\Connection->openFromPool(Array, Array)
#2 /html/vendor/yiisoft/yii2/db/Connection.php(1044): yii\db\Connection->getSlave(false)
#3 /html/vendor/yiisoft/yii2/db/Command.php(261): yii\db\Connection->getSlavePdo()
#4 /html/vendor/yiisoft/yii2/db/Command.php(1163): yii\db\Command->prepare(true)
#5 /html/vendor/yiisoft/yii2/db/Command.php(410): yii\db\Command->queryInternal('fetchAll', NULL)
#6 /html/common/config/bootstrap.php(37): yii\db\Command->queryAll()

取消$fecmall_common_main_local_config 的赋值,require(DIR . '/../../common/config/main-local.php') 放入yii\helpers\ArrayHelper::merge后正常。

并且我搜索项目后发现只在 /common/config/bootstrap.php 中获取db配置使用,并且这个参数的东西在参数 $config 里面也可以拿到。

本文由 cqslxz 创作,采用 知识共享署名 3.0 中国大陆许可协议 进行许可。 可自由转载、引用,但需署名作者且注明文章出处。

共收到 3 条回复 问题提问
Fecmall#11年前 0 个赞
$fecmall_common_main_local_config = require(__DIR__ . '/../../common/config/main-local.php');

把变量赋值参数,然后放入$config = yii\helpers\ArrayHelper::merge(),和直接放进去不是一样吗?

您把$config变量打印一下看看,这2种情况有什么不同。

cqslxz#21年前 0 个赞

我的意思是 你如果使用了主从配置,yii2框架 就会进行从数据库dsn的缓存,而你们在 require(DIR . '/../../common/config/bootstrap.php'); 文件中 进行了sql查询

SELECT * FROM  extensions where  status=:status AND installed_status=:installed_status ORDER BY priority ASC

而在这里cache组件还并没有被定义,YII::$app->get('cache'),就会抛出异常! 可在Yii::createObject($dbConfig)前unset() db里面的从配置,使用主!或者作者有更好的方法! 上面的报告只是让段代码失效了而已,这样不好!

Fecmall#31年前 0 个赞

@cqslxz #2楼

明白了

这段sql是为了加载插件的配置。

您先按照你的方法改一下吧,后面找时间我仔细研究一下。

添加回复 (需要登录)
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册
Your Site Analytics