我已经使用codeigniter成功配置了第二个数据库,并且能够创建表.现在的问题是,现在使用的每个以前存在的代码行都$this->db使用第二个数据库,所以它自然会弹出错误.让我解释一下细节:
我使用codeigniter的迁移库,在新的迁移中,我使用dbforge创建数据库,就像这样$this->dbforge->create_database('website_store').到目前为止一直很好,然后我使用$DB2 = $this->load->database('store', TRUE);并创建一个表连接到这个数据库.一切都很好.
然后迁移结束,codeigniter尝试更新迁移表以推送最新版本,但查看store数据库而不是默认数据库,因此它会弹出以下错误:
Table 'website_store.migrations' doesn't exist
UPDATE `migrations` SET `version` = 45
Run Code Online (Sandbox Code Playgroud)
希望有人知道使用多个数据库和迁移库.顺便说一句,在database.php文件中,它被设置为使用默认数据库:$active_group = "default";而不是商店数据库,所以它应该工作.看起来迁移库看到已经加载了数据库,感觉很懒,并使用了那个.
注意: 看起来这些人有类似的问题,他们通过将'pconnect'设置为'false'来修复,但保持与两个数据库的连接会很好:
我已经阅读了Yii2的处理程序,我不知道如何正确使用它们.
基本上在我SiteController,我有:
class SiteController extends \app\components\Controller
{
public function beforeAction($action)
{
// Makes some checks and if it's true, will render a file and stop execution of any action
if (...)
echo $this->render('standby');
return false;
}
return true;
}
// All my other actions here
}
Run Code Online (Sandbox Code Playgroud)
这似乎运行良好,并停止执行,但我得到该行的"已发送标题" render(),就好像它正在进行重定向.
如果我写Yii::$app-end()而不是return false,同样的事情发生.
如果我写exit();而不是return false,没有异常显示,但调试面板没有显示,因为Yii没有正确终止.
我尝试删除echo $this->render(..),它导致一个空页面,没有任何重定向,这似乎只是Yii抱怨我从Controller回应的东西.
当然,我无法返回结果render()或返回true,因为它将执行页面的操作,我试图避免并在此结束.
我知道在beforeAction()触发器中返回false EVENT_BEFORE_ACTION但我没有看到我应该使用它的位置.该事件的文件并没有真正帮助我.
那么有没有办法显示"待机"视图,阻止执行其他操作,并避免错误消息从Controller …