php artisan migrate:[PDOException] 找不到驱动程序
Posted
技术标签:
【中文标题】php artisan migrate:[PDOException] 找不到驱动程序【英文标题】:php artisan migrate : [PDOException] could not find driver 【发布时间】:2014-11-27 03:57:25 【问题描述】:我的系统配置是 Ubuntu 14.04 + XAMPP + Laravel 4 已安装
mysql驱动配置在/opt/lampp/htdocs/larva/app/config/database.php
'mysql' => array(
'driver' => 'mysql',
'host' => 'localhost',
'database' => 'db_larva',
'username' => 'root',
'password' => '*****',
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => 'tbl_',
),
在 /opt/lampp/etc/php.ini 上启用了 PDO 扩展
extension=php_pdo_mysql.dll
使用创建表
php artisan migrate:make create_users --create=users
生成2014_10_02_114459_create_users.php
php artisan migrate:make create_orders --create=orders
创建2014_10_02_054103_create_orders.php
现在在终端上我做了什么
cd /opt/lampp/htdocs/larva/
php artisan migrate
报错
[PDOException] 找不到驱动程序
当我跑步时
php artisan migrate --database=db_larva
它再次给出其他错误
[InvalidArgumentException] 数据库 [db_larva] 未配置。
请指导我做错了什么?
我的猜测:
位置是否正确?在根文件夹中运行php artisan
吗?
function up()
里面的默认表结构需要多写一些代码,可能是db连接设置
php artisan migrate:make create_users --create=users
和
php artisan migrate:make create_users --create --table=users
我还必须在其他地方配置数据库设置。
表前缀可能有问题。
我还没有在代码中的任何地方编写单行来连接数据库。在哪里编写连接字符串的代码,或者那是后期?
php --ini
给出不同的 php ini 路径?
Configuration File (php.ini) Path: /etc/php5/cli Loaded Configuration File: /etc/php5/cli/php.ini Scan for additional .ini files in: /etc/php5/cli/conf.d Additional .ini files parsed: /etc/php5/cli/conf.d/05-opcache.ini, /etc/php5/cli/conf.d/10-pdo.ini, /etc/php5/cli/conf.d/20-json.ini, /etc/php5/cli/conf.d/20-mcrypt.ini, /etc/php5/cli/conf.d/20-readline.ini, /etc/php5/cli/conf.d/20-xdebug.ini
【问题讨论】:
签出this solution 【参考方案1】:参数--database=
用于选择DB连接。您的数据库连接名称是 mysql
,因为您有:
'mysql' =>
所以您应该使用以下命令运行此查询:
php artisan migrate --database=mysql
但是在app/config/database.php
文件中有一行:
'default' => 'mysql',
如果设置为mysql
,则在要迁移到默认数据库连接时,迁移时不需要传递--database
参数。
php artisan migrate
足够了
编辑
在您的情况下,您应该编辑您的 /etc/php5/cli/php.ini
文件以启用 PDO 扩展
【讨论】:
是的。 t 是问题所在。php artisan migrate
不起作用,顺便说一句,这是原来的问题
@diEcho 你有同样的错误吗?您将什么定义为默认连接以及您尝试了哪个命令?你确定你没有在其他环境中设置数据库吗?
@diEcho 您应该在终端php --ini
中运行以显示ini 文件路径并确保在此文件中也启用了PDO
我做到了,但令人惊讶的是它显示了 ini file
的不同路径,但我交叉检查并得到 /lammp/..
文件中的 php.ini 是工作 ini
@diEcho 经常php cli和standard
php有不同的ini文件路径【参考方案2】:
我有同样的错误和设置我通过添加学说/dbal 清除它
composer require doctrine/dbal
【讨论】:
【参考方案3】:在您的php.ini
文件中取消注释
;extension=php_pdo_mysql.dll
并重新启动 apache 服务器。
【讨论】:
【参考方案4】:我在 xubuntu 14.04 上遇到了这个错误。我分两步修复它:
-
打开终端并运行
sudo apt-get install php5-mysql
将 db-host 更改为 127.0.0.1(而不是使用 localhost)
【讨论】:
【参考方案5】:更改 .env 文件。我在 laravel 5.2 中也遇到了同样的问题
我已经用下面的代码进行了更改,它运行良好。
APP_ENV=local
APP_DEBUG=true
APP_KEY=SomeRandomString
DB_HOST=localhost
DB_DATABASE=todo /* Use your database Name */
DB_USERNAME=root /* Use your host Name */
DB_PASSWORD=
CACHE_DRIVER=file
SESSION_DRIVER=file
【讨论】:
【参考方案6】:编辑您的 .env 文件并正确更新。
DB_HOST=127.0.0.1
DB_DATABASE=YOUR DB NAME
DB_USERNAME=YOUR DB USER NAME
DB_PASSWORD= YOUR DB PASSWORD
使用 127.0.0.1 而不是 localhost..
【讨论】:
以上是关于php artisan migrate:[PDOException] 找不到驱动程序的主要内容,如果未能解决你的问题,请参考以下文章
为啥 PHP artisan migrate 命令显示错误?
Lavarel 执行:php artisan migrate时报错
php artisan migrate 抛出 PDOException