如何用日志提醒现在 Laravel 链接的是哪一个数据库
在做高可用,现在是靠DBA手动查看连接的数据库。
如何在laravel查看当前数据库?因为我要用日志记录下当前链接的数据库,在高可用切换是体现出来。
DB::getDatabaseName();
试试
楼上正解。
我来说说细节
Laravel支持在config/database.php里面配置多个数据库连接,可以透过设置Model的
$connection
属性来达到不同的Model,对应不同的数据库连接。getConnection
的方法,可以获取当前Model正在使用的Connection
对象 。通过Connection
对象的getDatabaseName
方法获取获取当前正在使用的数据库名称。楼上的DB::getDatabaseName();
实际就是用的Connection对象另外一个比较暴力的方式是根据model的connection标识直接去config/database.php里面获取配置的数据库名称。
@我不饿 谢谢 ,这个是获取数据的名称,并不能说明我链接的哪一个后台数据,比如127.0.0.1 。
@dongyuhappy Model 里面去硬写 $connection倒也是一个办法。我已经有已经基础环境 ,mysql 5.7 的group replication ,用的是读写分离,但是链接的都是写的数据库,一旦写的数据一台机器关闭服务,在laravel中没有将数据的高可用链接切换。 在namespace Illuminate\Database 下有一个类似 failover的功能 reconnectIfMissingConnection(),没有起作用。 在 https://github.com/laravel/framework/issue... 中有提供解决办法,我现有是5.1版本,模拟后依旧不能成功。用DB::getPdo()可以看到链接信息,但是切换的时候想在日志中体现出来。
可以把 主从数据库的名字 做一点区分