第 245 行 ConnectionFactory.php 中的不同错误 - Laravel 5.4

Posted

技术标签:

【中文标题】第 245 行 ConnectionFactory.php 中的不同错误 - Laravel 5.4【英文标题】:Different errors in ConnectionFactory.php on line 245 - Laravel 5.4 【发布时间】:2018-11-08 03:38:41 【问题描述】:

我已经更新了几次问题,但原始问题基本保持不变,因此我的思考过程更容易理解。我为每个人添加了一个简短的摘要,以决定他们是否可以提供帮助。非常感谢任何帮助。

总结

很少出现错误(每 2-4 周一次)。 发生错误后,访问数据库的每个进一步请求也会崩溃并出现相同的错误 在 laravel/framework 中创建 mysqlConnector 时似乎发生了错误 到目前为止,该应用程序的实时服务器上仅发生错误,因此我们无法离开错误并开始调试,而是必须对其进行热修复以保持正常运行。 我们确实遇到了一些随机断开连接的问题(很少)。这大约在同一时刻开始。也许问题是在建立 PDO 连接时连接中断?

堆栈

Apache 2.4.32 php 7.1.15 MariaDB 10.2.6

详细问题

我们在一个 laravel 项目中遇到了以下错误:

[2018-05-29 11:02:05] production.ERROR:
Symfony\Component\Debug\Exception\FatalThrowableError: Illegal offset type in C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Database\Connectors\ConnectionFactory.php:245
Stack trace:
#0 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Database\Connectors\ConnectionFactory.php(183): Illuminate\Database\Connectors\ConnectionFactory->createConnector(Array)
#1 [internal function]: Illuminate\Database\Connectors\ConnectionFactory->Illuminate\Database\Connectors\closure()
#2 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Database\Connection.php(883): call_user_func(Object(Closure))
#3 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Database\Connection.php(445): Illuminate\Database\Connection->getPdo()
#4 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Database\Connection.php(640): Illuminate\Database\Connection->Illuminate\Database\closure('insert into `lo...', Array)
#5 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Database\Connection.php(607): Illuminate\Database\Connection->runQueryCallback('insert into `lo...', Array, Object(Closure))
#6 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Database\Connection.php(450): Illuminate\Database\Connection->run('insert into `lo...', Array, Object(Closure))
#7 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Database\Connection.php(404): Illuminate\Database\Connection->statement('insert into `lo...', Array)
#8 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Database\Query\Processors\Processor.php(32): Illuminate\Database\Connection->insert('insert into `lo...', Array)
#9 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Database\Query\Builder.php(2138): Illuminate\Database\Query\Processors\Processor->processInsertGetId(Object(Illuminate\Database\Query\Builder), 'insert into `lo...', Array, 'id')
#10 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Builder.php(1251): Illuminate\Database\Query\Builder->insertGetId(Array, 'id')
#11 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Model.php(684): Illuminate\Database\Eloquent\Builder->__call('insertGetId', Array)
#12 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Model.php(649): Illuminate\Database\Eloquent\Model->insertAndSetId(Object(Illuminate\Database\Eloquent\Builder), Array)
#13 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Model.php(518): Illuminate\Database\Eloquent\Model->performInsert(Object(Illuminate\Database\Eloquent\Builder))
#14 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Builder.php(734): Illuminate\Database\Eloquent\Model->save()
#15 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Support\helpers.php(950): Illuminate\Database\Eloquent\Builder->Illuminate\Database\Eloquent\closure(Object(App\Error))
#16 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Builder.php(735): tap(Object(App\Error), Object(Closure))
#17 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Model.php(1357): Illuminate\Database\Eloquent\Builder->create(Array)
#18 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Model.php(1369): Illuminate\Database\Eloquent\Model->__call('create', Array)
#19 C:\Webserver\Websites\www.somedomain.com\webroot\app\Exceptions\Handler.php(246): Illuminate\Database\Eloquent\Model::__callStatic('create', Array)
#20 C:\Webserver\Websites\www.somedomain.com\webroot\app\Exceptions\Handler.php(217): App\Exceptions\Handler->logErrorAndNotify(Array, Object(Symfony\Component\Debug\Exception\FatalThrowableError))
#21 C:\Webserver\Websites\www.somedomain.com\webroot\app\Exceptions\Handler.php(106): App\Exceptions\Handler->logThenRenderServerException(Object(Illuminate\Http\Request), Object(Symfony\Component\Debug\Exception\FatalThrowableError), 500)
#22 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Foundation\Http\Kernel.php(326): App\Exceptions\Handler->render(Object(Illuminate\Http\Request), Object(Symfony\Component\Debug\Exception\FatalThrowableError))
#23 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Foundation\Http\Kernel.php(124): Illuminate\Foundation\Http\Kernel->renderException(Object(Illuminate\Http\Request), Object(Symfony\Component\Debug\Exception\FatalThrowableError))
#24 C:\Webserver\Websites\www.somedomain.com\webroot\public\index.php(53): Illuminate\Foundation\Http\Kernel->handle(Object(Illuminate\Http\Request))
#25 main  

第一次发生此错误时,对网站的所有请求都会触发完全相同的错误。

谷歌搜索我发现的问题是以下 2 个解决方案:

    运行php artisan config:cachephp artisan config:clear 重启网络服务器

可以在here找到这些解决方案的一个示例

现在重新启动 Web 服务器可以正常工作,但在一个小时内我们又遇到了同样的问题。是否再次重新启动,它现在似乎可以工作,但我想知道是什么原因造成的以及我们如何防止它?

更多信息:

我们正在使用 Redis 缓存包括配置在内的所有内容。 使用自定义 Apache 堆栈完成托管。 网站已经运行了几个月,重启了几次,但从未遇到过这个问题。 今天第一次出现该问题时,服务器已填满其内存容量,第二次出现该问题时,还剩 15 GB 的内存。

任何线索或建议将不胜感激。如果需要更多信息来回答问题,我会在被问到时尝试扩展问题。

更新:

所以我们再次发生错误,同一行但不同的错误。我认为构建 PDO 连接时出现问题,然后此连接被存储以在一段时间内再次用于所有未来的请求?

这是新的堆栈跟踪:

[2018-06-25 15:27:38] production.ERROR: Symfony\Component\Debug\Exception\FatalThrowableError: Undefined class constant 'PDO::ATTR_CASE' in C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Database\Connectors\ConnectionFactory.php:245
Stack trace:
#0 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Database\Connectors\ConnectionFactory.php(183): Illuminate\Database\Connectors\ConnectionFactory->createConnector(Array)
#1 [internal function]: Illuminate\Database\Connectors\ConnectionFactory->Illuminate\Database\Connectors\closure()
#2 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Database\Connection.php(883): call_user_func(Object(Closure))
#3 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Database\Connection.php(904): Illuminate\Database\Connection->getPdo()
#4 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Database\Connection.php(392): Illuminate\Database\Connection->getReadPdo()
#5 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Database\Connection.php(318): Illuminate\Database\Connection->getPdoForSelect(true)
#6 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Database\Connection.php(640): Illuminate\Database\Connection->Illuminate\Database\closure('select * from `...', Array)
#7 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Database\Connection.php(607): Illuminate\Database\Connection->runQueryCallback('select * from `...', Array, Object(Closure))
#8 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Database\Connection.php(326): Illuminate\Database\Connection->run('select * from `...', Array, Object(Closure))
#9 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Database\Query\Builder.php(1710): Illuminate\Database\Connection->select('select * from `...', Array, true)
#10 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Database\Query\Builder.php(1695): Illuminate\Database\Query\Builder->runSelect()
#11 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Builder.php(462): Illuminate\Database\Query\Builder->get(Array)
#12 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Builder.php(446): Illuminate\Database\Eloquent\Builder->getModels(Array)
#13 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Database\Concerns\BuildsQueries.php(75): Illuminate\Database\Eloquent\Builder->get(Array)
#14 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Builder.php(391): Illuminate\Database\Eloquent\Builder->first(Array)
#15 C:\Webserver\Websites\www.somedomain.com\webroot\app\Http\Controllers\Webshop\HomeController.php(268): Illuminate\Database\Eloquent\Builder->firstOrFail()
#16 [internal function]: App\Http\Controllers\Webshop\HomeController->showArticleDetail('BOSAL-287-273-1...')
#17 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Routing\Controller.php(55): call_user_func_array(Array, Array)
#18 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Routing\ControllerDispatcher.php(44): Illuminate\Routing\Controller->callAction('showArticleDeta...', Array)
#19 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Routing\Route.php(203): Illuminate\Routing\ControllerDispatcher->dispatch(Object(Illuminate\Routing\Route), Object(App\Http\Controllers\Webshop\HomeController), 'showArticleDeta...')
#20 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Routing\Route.php(160): Illuminate\Routing\Route->runController()
#21 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Routing\Router.php(574): Illuminate\Routing\Route->run()
#22 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Routing\Pipeline.php(30): Illuminate\Routing\Router->Illuminate\Routing\closure(Object(Illuminate\Http\Request))
#23 C:\Webserver\Websites\www.somedomain.com\webroot\app\Http\Middleware\Localization.php(43): Illuminate\Routing\Pipeline->Illuminate\Routing\closure(Object(Illuminate\Http\Request))
#24 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(148): App\Http\Middleware\Localization->handle(Object(Illuminate\Http\Request), Object(Closure))
#25 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Routing\Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\closure(Object(Illuminate\Http\Request))
#26 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Routing\Middleware\SubstituteBindings.php(41): Illuminate\Routing\Pipeline->Illuminate\Routing\closure(Object(Illuminate\Http\Request))
#27 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(148): Illuminate\Routing\Middleware\SubstituteBindings->handle(Object(Illuminate\Http\Request), Object(Closure))
#28 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Routing\Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\closure(Object(Illuminate\Http\Request))
#29 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Foundation\Http\Middleware\VerifyCsrfToken.php(65): Illuminate\Routing\Pipeline->Illuminate\Routing\closure(Object(Illuminate\Http\Request))
#30 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(148): Illuminate\Foundation\Http\Middleware\VerifyCsrfToken->handle(Object(Illuminate\Http\Request), Object(Closure))
#31 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Routing\Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\closure(Object(Illuminate\Http\Request))
#32 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\View\Middleware\ShareErrorsFromSession.php(49): Illuminate\Routing\Pipeline->Illuminate\Routing\closure(Object(Illuminate\Http\Request))
#33 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(148): Illuminate\View\Middleware\ShareErrorsFromSession->handle(Object(Illuminate\Http\Request), Object(Closure))
#34 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Routing\Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\closure(Object(Illuminate\Http\Request))
#35 C:\Webserver\Websites\www.somedomain.com\webroot\app\Http\Middleware\ConfigureBugsnap.php(36): Illuminate\Routing\Pipeline->Illuminate\Routing\closure(Object(Illuminate\Http\Request))
#36 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(148): App\Http\Middleware\ConfigureBugsnap->handle(Object(Illuminate\Http\Request), Object(Closure))
#37 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Routing\Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\closure(Object(Illuminate\Http\Request))
#38 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Session\Middleware\StartSession.php(64): Illuminate\Routing\Pipeline->Illuminate\Routing\closure(Object(Illuminate\Http\Request))
#39 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(148): Illuminate\Session\Middleware\StartSession->handle(Object(Illuminate\Http\Request), Object(Closure))
#40 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Routing\Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\closure(Object(Illuminate\Http\Request))
#41 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse.php(37): Illuminate\Routing\Pipeline->Illuminate\Routing\closure(Object(Illuminate\Http\Request))
#42 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(148): Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse->handle(Object(Illuminate\Http\Request), Object(Closure))
#43 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Routing\Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\closure(Object(Illuminate\Http\Request))
#44 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Cookie\Middleware\EncryptCookies.php(59): Illuminate\Routing\Pipeline->Illuminate\Routing\closure(Object(Illuminate\Http\Request))
#45 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(148): Illuminate\Cookie\Middleware\EncryptCookies->handle(Object(Illuminate\Http\Request), Object(Closure))
#46 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Routing\Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\closure(Object(Illuminate\Http\Request))
#47 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(102): Illuminate\Routing\Pipeline->Illuminate\Routing\closure(Object(Illuminate\Http\Request))
#48 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Routing\Router.php(576): Illuminate\Pipeline\Pipeline->then(Object(Closure))
#49 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Routing\Router.php(535): Illuminate\Routing\Router->runRouteWithinStack(Object(Illuminate\Routing\Route), Object(Illuminate\Http\Request))
#50 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Routing\Router.php(513): Illuminate\Routing\Router->dispatchToRoute(Object(Illuminate\Http\Request))
#51 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Foundation\Http\Kernel.php(176): Illuminate\Routing\Router->dispatch(Object(Illuminate\Http\Request))
#52 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Routing\Pipeline.php(30): Illuminate\Foundation\Http\Kernel->Illuminate\Foundation\Http\closure(Object(Illuminate\Http\Request))
#53 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\spatie\laravel-robots-middleware\src\RobotsMiddleware.php(14): Illuminate\Routing\Pipeline->Illuminate\Routing\closure(Object(Illuminate\Http\Request))
#54 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(148): Spatie\RobotsMiddleware\RobotsMiddleware->handle(Object(Illuminate\Http\Request), Object(Closure))
#55 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Routing\Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\closure(Object(Illuminate\Http\Request))
#56 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Foundation\Http\Middleware\TransformsRequest.php(30): Illuminate\Routing\Pipeline->Illuminate\Routing\closure(Object(Illuminate\Http\Request))
#57 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(148): Illuminate\Foundation\Http\Middleware\TransformsRequest->handle(Object(Illuminate\Http\Request), Object(Closure))
#58 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Routing\Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\closure(Object(Illuminate\Http\Request))
#59 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Foundation\Http\Middleware\TransformsRequest.php(30): Illuminate\Routing\Pipeline->Illuminate\Routing\closure(Object(Illuminate\Http\Request))
#60 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(148): Illuminate\Foundation\Http\Middleware\TransformsRequest->handle(Object(Illuminate\Http\Request), Object(Closure))
#61 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Routing\Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\closure(Object(Illuminate\Http\Request))
#62 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Foundation\Http\Middleware\ValidatePostSize.php(27): Illuminate\Routing\Pipeline->Illuminate\Routing\closure(Object(Illuminate\Http\Request))
#63 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(148): Illuminate\Foundation\Http\Middleware\ValidatePostSize->handle(Object(Illuminate\Http\Request), Object(Closure))
#64 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Routing\Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\closure(Object(Illuminate\Http\Request))
#65 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode.php(46): Illuminate\Routing\Pipeline->Illuminate\Routing\closure(Object(Illuminate\Http\Request))
#66 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(148): Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode->handle(Object(Illuminate\Http\Request), Object(Closure))
#67 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Routing\Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\closure(Object(Illuminate\Http\Request))
#68 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(102): Illuminate\Routing\Pipeline->Illuminate\Routing\closure(Object(Illuminate\Http\Request))
#69 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Foundation\Http\Kernel.php(151): Illuminate\Pipeline\Pipeline->then(Object(Closure))
#70 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Foundation\Http\Kernel.php(116): Illuminate\Foundation\Http\Kernel->sendRequestThroughRouter(Object(Illuminate\Http\Request))
#71 C:\Webserver\Websites\www.somedomain.com\webroot\public\index.php(53): Illuminate\Foundation\Http\Kernel->handle(Object(Illuminate\Http\Request))
#72 main

错误行再次出现在 laravel/framework 的 ConnectionFactory 的第 245 行。这一行是下面函数中的return new MySQLConnector; 行:

/**
 * Create a connector instance based on the configuration.
 *
 * @param  array  $config
 * @return \Illuminate\Database\Connectors\ConnectorInterface
 *
 * @throws \InvalidArgumentException
 */
public function createConnector(array $config)

    if (! isset($config['driver'])) 
        throw new InvalidArgumentException('A driver must be specified.');
    

    if ($this->container->bound($key = "db.connector.$config['driver']")) 
        return $this->container->make($key);
    

    switch ($config['driver']) 
        case 'mysql':
            return new MySqlConnector;
        case 'pgsql':
            return new PostgresConnector;
        case 'sqlite':
            return new SQLiteConnector;
        case 'sqlsrv':
            return new SqlServerConnector;
    

    throw new InvalidArgumentException("Unsupported driver [$config['driver']]");

MySqlConnector 类扩展了 Connector 类。连接器的前几行是:

<?php

namespace Illuminate\Database\Connectors;

use PDO;
use Exception;
use Illuminate\Support\Arr;
use Doctrine\DBAL\Driver\PDOConnection;
use Illuminate\Database\DetectsLostConnections;

class Connector

    use DetectsLostConnections;

    /**
     * The default PDO connection options.
     *
     * @var array
     */
    protected $options = [
        PDO::ATTR_CASE => PDO::CASE_NATURAL,
        PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
        PDO::ATTR_ORACLE_NULLS => PDO::NULL_NATURAL,
        PDO::ATTR_STRINGIFY_FETCHES => false,
        PDO::ATTR_EMULATE_PREPARES => false,
    ];

似乎应该设置 PDO::ATTR_CASE。或者也许 PDO::CASE_NATURAL 也没有设置?我并不完全理解到底发生了什么,但是在创建新的 MySqlConnecter 对象或创建底层连接器的某个地方,它会返回未设置的错误。首先,我认为这与课堂上的一些功能有关。但是看到 Trace 在创建时停止意味着错误不能真正来自任何函数。

所以我认为在使用 PDO 类时一定会出现问题? Connecter.php 在开头也有以下行:'use Doctrine\DBAL\Driver\PDOConnection;'它也扩展了 PDO。

一旦发生这种情况,每个用户的每个进一步请求都会通过堆栈跟踪返回相同的错误,直到我们重新启动 Apache,这我根本不明白。如果 PDO 文件不可用,似乎可能会发生这种情况,但我不确定为什么它会一直发生以及为什么重新启动 Apache 会解决它。

以下是可能有助于解决问题的子问题:

    出现此错误的原因是什么? 如果无法轻松回答上述问题,我该怎么做才能更好地理解这个问题?它只是在我们的生活环境中很少发生,所以我们没有机会把dd 放在各处来一步一步地经历它。每次重启 Apache 时都必须使用 quickfix。 为什么初始失败后的每个请求都会失败并出现相同的错误?

【问题讨论】:

试试composer dump-autoload。也许它可以帮助你!如果没有,请尝试从 laravel 和 redis 之间不一致的工作中检测问题。 @Amin.Qarabaqi 应该没有任何影响,但我们在第一次之后就已经这样做了。此外,我们只重新启动了网络服务器,而不是 Redis。这让我觉得 Redis 与它无关。 就个人而言,我认为您的 Web 服务负载很高,可能是用户受到攻击或 SQL 查询不佳。监控你的负载,看看是什么导致了这个混乱。 @PayamKhaninejad 我想这可能是某些查询中的性能问题,但我怀疑它是因为大多数都已优化。我们确实有很多对第三方 API 的请求,这些请求需要很长时间,但这不应该给服务器带来任何负载。上次我们收到此错误时,CPU 和内存都运行良好。无论如何,这可能是一个很好的步骤,.但这似乎并不能解释为什么它也停止为任何未来的请求工作?同时也有一些用户,但实际上并不多。 (10-20?) 【参考方案1】:

我们最后一次尝试重新启动 MySQL 服务器以及 Apache。 (按顺序)这似乎解决了这个问题。以防我们那天晚上也重新启动了服务器。

这为我们解决了这个问题,但如果有人对导致问题的原因有一些实际知识有更好的答案,我希望他们分享他们的知识!

编辑:仍未修复,似乎是临时修复。

【讨论】:

您的项目中有一些查询似乎在循环运行或可能需要很长时间,找到它们并优化这些查询,为了测试您可以去整个项目还检查服务器上的 CPU 使用情况当您的 CPU 使用率增加时,您可以检查该进程,我相信您会找到结果。【参考方案2】:

到目前为止,这里有三个建议:

确保您的数据库配置设置正确并以这种方式持续存在(因此在服务器端读取的变量没有任何变化......不仅来自 .env 文件)。这可能与缓存和当前数据库设置之间的某种冲突有关。仔细看看; 确保你的 php 版本符合 laravel 5.4 的要求,因为这种类型的错误很可能是由当前 php 版本中不存在的语法导致的工作被破坏; 这也可能与您正在使用的 php 版本的 MySQL PDO 驱动程序的可用性有关,因此无法访问有关 PDO 类中内容的给定函数片段。这对我来说听起来最合理,所以你可以更深入地挖掘这件事。关注正在使用的特定 PHP 和 PDO 模块的设置。

此外,应该关注服务器端配置错误(如 apache 或服务器管理),因为错误输入可能会传递到基本 laravel 层并导致意外行为。不幸的是,堆栈跟踪和错误周围的信息不足以准确诊断问题。不过请继续关注,这似乎很有趣。

【讨论】:

首先感谢您的回答,我会尽快回复您的 3 条建议。已检查数据库配置并正确设置并正确缓存。很久没有做出任何改变。 PHP 版本符合要求,不过我会将我们的堆栈规范添加到我的问题中。我们已经安装了 php_pdo_mysql.dll 扩展。如果您对可能出现的问题有任何建议,我会很高兴听到它们。我不喜欢这些我不知道如何重现的问题:( 这听起来像是一个非常奇怪的问题......您是否获得了有关它发生的情况的任何进一步信息?自上次更新以来发生过这种情况吗?关于我上面提到的一个可能的问题领域的任何进一步细节?因为这就像我能想到的一般情况,除此之外的任何其他事情听起来都非常不合理,老实说......我仍然发现到目前为止给定的线索不足以准确地思考解决这个问题的方向,所以我猜你'必须收集更多关于这个问题的经验。 是的,问题是到目前为止它只发生在直播环境中。猜测我们可能只需要在下次它发生时在现场进行调试,但这是我迄今为止一直试图避免的事情。我们确实遇到了一些随机断开连接的问题(很少)。我将把它添加到问题中。可能是在建立 PDO 连接时连接中断?有时会显示“无法访问站点,之后将立即重新连接”

以上是关于第 245 行 ConnectionFactory.php 中的不同错误 - Laravel 5.4的主要内容,如果未能解决你的问题,请参考以下文章

Acwing 245.你能回答这些问题吗

Flutter 贪吃蛇小游戏(要用上下左右控制的。。。没键盘的不行哦)245行

《安富莱嵌入式周报》第245期:2021.12.20--2021.12.26

第245天学习打卡(知识点回顾 spring IOC)

[从头读历史] 第245节 三皇与五帝时期的全面解读

《安富莱嵌入式周报》第245期:2021.12.20--2021.12.26