在 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 artisancomposer 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。

有什么想法可能是错的吗?

编辑这会影响到甚至无法运行的 artisancomposer 组件。

【问题讨论】:

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()”

Laravel 8在null上调用成员函数扩展()

Lumen - FatalThrowableError 在 null 上调用成员函数 file()

Ajax 请求 500 错误 - 在 null 上调用成员函数