【问题标题】:Pdo sqlite driver issuepdo sqlite驱动问题
【发布时间】:2016-01-08 12:29:18
【问题描述】:

我刚开始使用 laravel,当我尝试从 sqlite 返回文章 JSON 时,我收到此驱动程序错误。

public function index(){
    $articles = \App\Article::all();
    return $articles;
}

哎呀,好像出了点问题。 Connector.php 第 55 行中的 1/1 PDOException:找不到驱动程序

in Connector.php line 55
at PDO->__construct('sqlite:/srv/http/laravel/storage/database.sqlite', null, null, array('0', '2', '0', false, false)) in Connector.php line 55
at Connector->createConnection('sqlite:/srv/http/laravel/storage/database.sqlite', array('driver' => 'sqlite', 'database' => '/srv/http/laravel/storage/database.sqlite', 'prefix' => '', 'name' => 'sqlite'), array('0', '2', '0', false, false)) in SQLiteConnector.php line 37
at SQLiteConnector->connect(array('driver' => 'sqlite', 'database' => '/srv/http/laravel/storage/database.sqlite', 'prefix' => '', 'name' => 'sqlite')) in ConnectionFactory.php line 60
at ConnectionFactory->createSingleConnection(array('driver' => 'sqlite', 'database' => '/srv/http/laravel/storage/database.sqlite', 'prefix' => '', 'name' => 'sqlite')) in ConnectionFactory.php line 49
at ConnectionFactory->make(array('driver' => 'sqlite', 'database' => '/srv/http/laravel/storage/database.sqlite', 'prefix' => ''), 'sqlite') in DatabaseManager.php line 175
at DatabaseManager->makeConnection('sqlite') in DatabaseManager.php line 67
at DatabaseManager->connection(null) in Model.php line 3245
at Model::resolveConnection(null) in Model.php line 3211
at Model->getConnection() in Model.php line 1914
at Model->newBaseQueryBuilder() in Model.php line 1857
at Model->newQueryWithoutScopes() in Model.php line 1831
at Model->newQuery() in Model.php line 667
at Model::all() in ArticlesController.php line 14
at ArticlesController->index()
at call_user_func_array(array(object(ArticlesController), 'index'), array()) in Controller.php line 256
at Controller->callAction('index', array()) in ControllerDispatcher.php line 164
at ControllerDispatcher->call(object(ArticlesController), object(Route), 'index') in ControllerDispatcher.php line 112
at ControllerDispatcher->Illuminate\Routing\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 139
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 103
at Pipeline->then(object(Closure)) in ControllerDispatcher.php line 114
at ControllerDispatcher->callWithinStack(object(ArticlesController), object(Route), object(Request), 'index') in ControllerDispatcher.php line 69
at ControllerDispatcher->dispatch(object(Route), object(Request), 'App\Http\Controllers\ArticlesController', 'index') in Route.php line 201
at Route->runWithCustomDispatcher(object(Request)) in Route.php line 134
at Route->run(object(Request)) in Router.php line 704
at Router->Illuminate\Routing\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 139
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 103
at Pipeline->then(object(Closure)) in Router.php line 706
at Router->runRouteWithinStack(object(Route), object(Request)) in Router.php line 671
at Router->dispatchToRoute(object(Request)) in Router.php line 631
at Router->dispatch(object(Request)) in Kernel.php line 236
at Kernel->Illuminate\Foundation\Http\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 139
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in VerifyCsrfToken.php line 50
at VerifyCsrfToken->handle(object(Request), object(Closure))
at call_user_func_array(array(object(VerifyCsrfToken), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in ShareErrorsFromSession.php line 49
at ShareErrorsFromSession->handle(object(Request), object(Closure))
at call_user_func_array(array(object(ShareErrorsFromSession), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in StartSession.php line 62
at StartSession->handle(object(Request), object(Closure))
at call_user_func_array(array(object(StartSession), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in AddQueuedCookiesToResponse.php line 37
at AddQueuedCookiesToResponse->handle(object(Request), object(Closure))
at call_user_func_array(array(object(AddQueuedCookiesToResponse), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in EncryptCookies.php line 59
at EncryptCookies->handle(object(Request), object(Closure))
at call_user_func_array(array(object(EncryptCookies), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in CheckForMaintenanceMode.php line 42`enter code here`
at CheckForMaintenanceMode->handle(object(Request), object(Closure))
at call_user_func_array(array(object(CheckForMaintenanceMode), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 103
at Pipeline->then(object(Closure)) in Kernel.php line 122
at Kernel->sendRequestThroughRouter(object(Request)) in Kernel.php line 87
at Kernel->handle(object(Request)) in index.php line 54
at require_once('/srv/http/laravel/public/index.php') in server.php line 21

【问题讨论】:

  • 您能否检查pdo_mysql 扩展是否已启用?要验证它是否已启用,请使用 phpinfo()php -i 命令是不够的,因为 PHP CLI 使用不同的配置设置。
  • 你能分享你的 phpinfo() 输出吗?
  • 对不起,这是我的错误,我的意思是pdo_sqlite,但不小心输入了pdo_mysqlpdo_sqlite 似乎已启用,我正在寻找解决问题。给我几分钟:)
  • 谢谢,顺便说一句,我正在使用 archlinux,我似乎已经安装了所有软件包。 idk 可能是什么问题

标签: php sqlite laravel pdo


【解决方案1】:

请确保您已正确安装pdopdo_sqlite 扩展。

php -v 将输出是否缺少任何扩展文件。

你应该有这些包 sqlite, php5-sqlite 。并用pecl建造。 pecl install pdo && pecl install pdo_sqlite 。最后,您应该在 php.ini 中启用 pdo、pdo_sqlite 扩展。根据您的 phpinfo() 输出,您的 php.ini 文件为 /etc/php/php.ini

再次根据您的 phpinfo() 输出,您的扩展文件夹是 /usr/lib/php/modules/ 。该目录下应该有pdo_sqlite.so文件。

【讨论】:

    【解决方案2】:

    我发现如果我们可以写入数据库,那么连接工作正常。尝试从数据库中检索时,我们都遇到了这个问题。我通过重新启动服务器解决了这个问题。这在 Ubuntu 14.04 中对我有用

    【讨论】:

    • “你试过把它关掉然后再打开吗”就像an IT Crowd gag 一样好,但在 StackOverflow 上不是一个令人满意的答案。
    猜你喜欢
    • 2013-06-08
    • 2015-09-23
    • 2018-09-30
    • 2015-02-01
    • 1970-01-01
    • 2011-06-02
    • 2012-02-06
    • 2015-10-19
    相关资源
    最近更新 更多