在 null 上调用成员函数 connection()
Posted
技术标签:
【中文标题】在 null 上调用成员函数 connection()【英文标题】:Call to a member function connection() on null 【发布时间】:2018-02-06 21:45:42 【问题描述】:我正在尝试为我在 Github 上的一个项目创建一个新的虚拟开发环境。我已经安装了 MariaDB,php 7,对存储库进行了本地克隆,并恢复了它的 .env 文件。它应该可以工作。
不幸的是,当我输入 php artisan 和 composer update 时,我收到以下错误:
PHP 致命错误:未捕获的错误:在 src/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php:1058 中调用 null 上的成员函数 connection() 堆栈跟踪: #0 src/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php(1024): Illuminate\Database\Eloquent\Model::resolveConnection(NULL) #1 src/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php(859): Illuminate\Database\Eloquent\Model->getConnection() #2 src/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php(818): Illuminate\Database\Eloquent\Model->newBaseQueryBuilder() #3 src/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php(802): Illuminate\Database\Eloquent\Model->newQueryWithoutScopes() #4 src/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php(1374): src/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php 中的 Illuminate\Database\Eloquen在第 1058 行
我不知道这是否与手头的错误有关,但请注意堆栈跟踪 #4 上 Eloquent 的拼写错误。
你可以在这里找到我的 composer.json 文件:https://github.com/galadhremmin/Parf-Edhellen/blob/master/src/composer.json
PHP 版本:Debian 9 上的 7.1.2。
有什么想法可能是错的吗?
编辑这会影响到甚至无法运行的 artisan 和 composer 组件。
【问题讨论】:
MariaDB(mysql 服务)真的开启了吗?仅仅因为您安装了它并不意味着它已开启。 @BrianGottier 我相信它是,因为当我在终端中键入 mysql 时它会响应。我可以登录并使用 .env-文件中提供的凭据查询数据库。 看这个文件:src/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php 第1058行,无论一个类的实例在connection()方法前面尚未实例化。 当然你已经仔细检查了你的连接设置至少两次......所以我会尝试用一个普通的 PHP 脚本连接并调试它。我只是在谈论mysqli函数或PDO。 听起来是 Laravel 特有的。我过去使用过几次 Laravel,但没有资格在这里为您提供帮助。 【参考方案1】:我通过使用debug_print_backtrace
找到了问题的根源。这是打印完整回溯的绝佳方法。
在这种情况下,问题在于我已将日志服务附加到异常处理程序。记录器将访问数据库以记录发生的错误,并且它不支持 CLI 环境。
【讨论】:
感谢您发布您的解决方案。以上是关于在 null 上调用成员函数 connection()的主要内容,如果未能解决你的问题,请参考以下文章
Laravel 5 单元测试 - 在 null 上调用成员函数 connection()
带有 mongodb 的流明:出现错误:在 null 上调用成员函数 prepare()
在运行 laravel phpunit testcase 时,我在 Model.php 第 1249 行收到错误“调用 null 上的成员函数 connection()”