gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 12:36:47 25 4
gpt4 key购买 nike

我已经更新了几次问题,但保留了原始问题的大部分内容,因此我的思考过程更容易理解。我为每个人添加了一个简短的摘要,以决定他们是否能够对此提供帮助。任何帮助深表感谢。

摘要

  • 很少发生错误(每 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 中找到找到这些解决方案的一个示例。

    现在重新启动网络服务器工作,但在一小时内我们又出现了同样的问题。又重新启动了,它现在似乎可以工作,但我想知道是什么原因导致这种情况以及我们如何防止它?

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

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

    更新:

    所以我们再次出现错误,同一行但不同的错误。我认为构建 PDO 连接时出了点问题,然后这个连接会被存储起来,以便在一段时间内再次用于所有 future 的请求?

    这是新的堆栈跟踪:
    [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 类扩展了连接器类。连接器的前几行是:
    <?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。
  • 为什么初始失败后的每个请求都会失败并出现相同的错误?
  • 最佳答案

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

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

    编辑:仍然没有修复,似乎是一个临时修复。

    关于php - 第 245 行 ConnectionFactory.php 中的不同错误 - Laravel 5.4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50585081/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com