Laravel 5.1 - `php artisan migrate` 给出了 'PDOException'

Posted

技术标签:

【中文标题】Laravel 5.1 - `php artisan migrate` 给出了 \'PDOException\'【英文标题】:Laravel 5.1 - `php artisan migrate` is giving 'PDOException'Laravel 5.1 - `php artisan migrate` 给出了 'PDOException' 【发布时间】:2015-10-11 07:42:04 【问题描述】:

我知道这是一个重复的问题,但是无论我尝试了什么,不幸的是没有运气。 (补充一下,我用的是MAMP)

我相信我成功设置了数据库连接,因为使用注册表单 (Auth/register),在提交表单后,我之前收到错误 PDO Exception: Driver not found,但在更改为我的从默认的 MAMP 到 php 5.5.17 (PHP 5.6.1),我开始收到错误:SQLSTATE[42S02]: Base table or view not found: 1146 Table 'laravel.users' doesn't exist,我认为这表明数据库连接正在工作,只是 'users table' 没有已创建。

我的问题从这里开始。当我尝试在终端中使用php artisan migratemigrate:anything 时,它会抛出错误:

[PDO异常] 找不到驱动

但我想做的是使用php artisan migrate 能够创建表并迁移它们。



我尝试过的事情:

如果 pdo 文件安装成功,我添加了<?php echo phpinfo(); ?>。 我得到了结果:

所以我觉得还可以。


人们在谈论打开 /MAMP/bin/php/php5.6.1/conf/php.ini 并在代码中添加 extension=pdo_mysql.so,但我的已经放在那里了。
当我在项目根目录 (/MAMP/htdocs/proj) 中尝试 php -i | grep PDO 时,我得到了:

PDO PDO support => enabled PDO drivers => sqlite PDO Driver for SQLite 3.x => enabled

php -i | grep Conf 和 `php --ini 也输出:

Configuration File (php.ini) Path: /Applications/MAMP/bin/php/php5.6.1/conf Loaded Configuration File: /Applications/MAMP/bin/php/php5.6.1/conf/php.iniphp artisan migrate 仍然抛出同样的错误

解决方案:

我选择 MAMP 在浏览器中使用版本 5.5.17 而不是 5.6.1(来自 MAMP Preferences),但是这次终端运行的是 5.6.1。我所做的是首先检查which PHP 命令,然后运行nano ~/.bash_profile 命令;并编辑版本文档。现在一切都已启动并运行:)

【问题讨论】:

【参考方案1】:

您在浏览器中看到的是您为通过 apache 运行的 PHP 启用了 PDO。但这并不意味着您已经为通过 CLI 运行的 PHP 启用了它(实际上它们使用两个单独的 ini 文件)。要确认您可以尝试:

php -i | grep PDO

您会看到它丢失或未启用。所以你需要做的是找到哪个php.ini正在使用通过CLI运行的PHP并在那里添加PDO模块:

php -i | grep Conf

它会输出如下内容:

Configuration File (php.ini) Path => /etc/php5/cli
Loaded Configuration File => /etc/php5/cli/php.ini

【讨论】:

我编辑了 OP(我尝试过的部分)。请看一下 @senty 我也编辑了我的答案,请看一下,让我知道结果。 是的,我看到了输出:Configuration File (php.ini) Path => /etc/php5/cli Loaded Configuration File => /etc/php5/cli/php.iniphp artisan migrate 仍然抛出同样的错误[PDOException] could not find driver @senty 您是否将 PDO 模块添加到该 ini 文件中? extension=pdo_mysql.so 已经存在于我的 php.ini 文件中:/

以上是关于Laravel 5.1 - `php artisan migrate` 给出了 'PDOException'的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 5.1 Php artisan 命令在作曲家更新后不起作用

在 Laravel 5.1 中请求 ajax 文件不控制 PHP?

Laravel 5.1 中的 VerifyCsrfToken.php 第 53 行中的 TokenMismatchException

laravel 5.1部署到 集成环境 lnmp上

Laravel 5.1的多路由文件的配置

后端基础php框架laravel 5.1环境构建(CentOS 6.5)之FastCGI