![](/img/trans.png)
[英]Laravel: PHP Artisan Migrate throws PDO Exception: Could not find driver (Postgres)
[英]php artisan migrate throwing [PDO Exception] Could not find driver - Using Laravel
我在安裝 laravel 時遇到了糟糕的體驗。但是,我能夠這樣做並進入下一個級別。 我使用生成器並創建了我的遷移。 但是當我輸入最后一個命令時
php artisan migrate
它拋出 PDOException - 找不到驅動程序。
'mysql' => array(
'driver' => 'mysql',
'host' => 'localhost',
'unix_socket' => '/Applications/MAMP/tmp/mysql/mysql.sock',
'database' => 'database',
'username' => 'root',
'password' => '',
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
),
這是我在 config/database.php 中的配置。
我嘗試在 stackoverflow 和 laravel 論壇上搜索,人們認為這是 PDO 問題,而不是 artisan 或 php 的問題 - 我遵循了這些建議,例如添加
extension=pgsql.so
extension=pdo_pgsql.so
在 php.ini 中
沒有陽性結果。 它總是說[PDOException]could not find driver.
有人可以幫忙解決這個問題嗎?
我使用的環境:Mac, laravel 4, MAMP PRO with php 5.4.4
您可以使用
sudo apt-get install php7-mysql
或者
sudo apt-get install php5-mysql
或者
sudo apt-get install php-mysql
這對我有用。
這對我有用:
sudo apt-get install php5-sqlite
這為 php5 安裝了 sqlite,然后我再次運行 php artisan migrate 命令並完美運行。
您需要專門啟用 pdo_mysql 插件。 假設您使用的是標准 PHP 安裝,那么通常您只需要將它添加到您的 PHP.ini 文件中:
extension=pdo_mysql.so
不過,您需要確保此文件存在於擴展目錄中。
添加pdo_pgsql.so
沒有幫助,因為那是針對 PostgreSQL 的。
此外,您應該確保在對 PHP ini 文件進行更改后重新啟動 Web 服務器,因為更改可能不會以其他方式反映出來。
在這里遇到了同樣的問題,結果證明這是因為命令行中的 PHP 使用了與瀏覽器版本不同的php.ini
文件,這就是為什么當您查看phpinfo()
在瀏覽器。
根據這個答案,您只需要運行:
php --ini
在命令行中,它會告訴您當前加載的php.ini
的路徑(可能實際上是一個php-cli.ini
文件,該文件與您的常規php.ini
文件位於同一位置)。
找到后,使用所需的 pdo 擴展名修改它(在本例中為 MySQL):
extension=pdo_mysql.so
或者,對於使用某種 WAMP 服務器的 Windows 上的任何其他用戶,它可能看起來像這樣:
extension=php_pdo_mysql.dll
我想你錯過了 php5 的 mysql 驅動程序。 執行以下命令:
sudo apt-get install php5-mysql
/etc/init.d/php5-fpm restart
請同時檢查您的 Laravel .env
文件。 確保DB_CONNECTION=mysql
,否則它將無法與 MySQL 一起使用。 它試圖加載其他東西。
您缺少 PDO 驅動程序。
首先安裝驅動
對於 ubuntu:對於 mysql 數據庫。
須藤 apt-get 安裝 php5.6-mysql/php7.2-mysql
您還可以搜索其他數據庫系統。
您也可以搜索驅動程序:
sudo apt-cache 搜索驅動程序名稱
Then Run the cmd php artisan migrate
在我的情況下,您必須安裝最新版本的php mysql
我安裝php7.1-mysql
嘗試這個
sudo apt-get install php7.1-mysql
我正在使用最新版本的 Laravel
有同樣的問題,只是想通了,網站在 MAMP 的 php 下運行,但是當你調用命令時,它運行的是 mac 的(如果沒有修改 bash 路徑)。 當 mac 沒有這些擴展時,你會遇到問題。
運行 php -i 找出加載的擴展,並安裝那些你錯過的。 或運行 '/Applications/MAMP/bin/php/php5.3.6/bin/php artisan {your command}' 來使用 MAMP
我也遇到了同樣的錯誤 --> "[PDOException]
找不到驅動程序“
之后我使用了很多命令但沒有得到任何幫助
最后我使用了以下命令,解決了我的問題。
須藤 apt-get 安裝 php5-sqlite
使用sqlite 進行Laravel 測試需要 php pdo sqlite 驅動程序
對於 Ubuntu 14.04
sudo apt-get install php5-sqlite
sudo service apache2 restart
在 ubuntu 16.04 中沒有php5-sqlite
sudo apt-get install php7.0-sqlite
sudo service apache2 restart
我收到了 PostgreSQL 的這個錯誤,解決方法是:
sudo apt-get install php7.1-pgsql
你只需要使用你安裝的 PHP 版本,我的是 7.1。 這已經解決了 PostgreSQL 的問題。
我正在取消 ubuntu 14.04
下面的命令為我解決了這個問題。
須藤 apt-get 安裝 php-mysql
就我而言,在將我的 php 版本從 5.5.9 更新到 7.0.8 后,我收到了這個錯誤,包括另外兩個錯誤。
錯誤:
laravel/framework v5.2.14 需要 ext-mbstring * -> 系統中缺少請求的 PHP 擴展 mbstring。
phpunit/phpunit 4.8.22 需要 ext-dom * -> 系統中缺少請求的 PHP 擴展 dom。
[PDO 異常]
找不到驅動程序
解決方案:
我安裝了這個軟件包,我的問題就消失了。
須藤 apt-get 安裝 php-mbstring
須藤 apt-get 安裝 php-xml
須藤 apt-get 安裝 php-mysql
我在 debian 上遇到了這個問題。 問題是,我將 dotdeb 存儲庫用於更新的 PHP 包。 出於某種原因,它將 php cli 更新為 7.0,而 web php 二進制文件仍為 php 5.6。 我使用此答案將 php 命令行二進制文件鏈接到 5.6 版本,如下所示:
$ sudo ln -sfn /usr/bin/php5 /etc/alternatives/php
這對我有用:(對於 pgsql:使用 'pgsql' 而不是 'mysql')
第1步)
sudo apt-get install php-mysql
第2步)
php artisan config:clear
步驟 3)
php artisan config:cache
第四步)
然后重新啟動您的服務器,並再次生成密鑰並遷移它,它完成了
首先像這樣檢查你的php版本:
php -v
例如,在您獲得版本號后,我獲得7.1然后像這樣安裝
sudo apt-get install php7.1-sqlite //for laravel testing with sqlite
sudo apt-get install php-mysql //for default mysql
sudo apt-get install php7.1-mysql //for version based mysql
sudo apt-get install php7.1-common //for other necessary package for php
並且需要重啟apache2
sudo service apache2 restart
對於未來的搜索者。 在 FreeBSD 上試試下一個
pkg_info | grep php5-pdo_mysql
如果您看到空行作為回報,請執行以下操作:
cd /usr/ports/databases/php5-pdo_mysql
然后安裝
make install clean
然后只需重新啟動您的 apache 就完成了
例如sudo /usr/local/etc/rc.d/apache22 restart
通過這個命令安裝它
sudo apt-get install php5-gd
這對我有用。
就我而言,我不知道 Apache 運行的 PHP 與 CLI 運行的 PHP 不同。 如果在 httpd.conf 中的配置期間您指定了一個 PHP 模塊,而不是您的 CLI 使用的默認模塊,則可能會出現這種情況。
我找到了此錯誤的正確解決方案! 要么你沒有安裝任何數據庫,要么你在這個文件config/database.php 中的默認數據庫被設置為這樣的其他數據庫
'default' => 'sqlite',
'default' => env('DB_CONNECTION', 'sqlite'), //laravel 5.2
更改您已安裝的默認值或安裝默認數據庫! 在我將該行更改為以下內容后,我已經安裝了 mysql 和 php artisan migrate 工作:
'default' => 'mysql',
'default' => env('DB_CONNECTION', 'mysql'), //laravel5.2
我也遇到了同樣的錯誤 -->“[PDOException] 找不到驅動程序”
我意識到 php 指向 /usr/bin/php 而不是 lampp /opt/lampp/bin/php 所以我只是創建和別名
別名 php="/opt/lampp/bin/php"
還必須更新 .env 文件以確保更新數據庫訪問憑據。
猜猜看,它奏效了!
如果您使用的是 Laravel 5.x,並且錯誤來自嘗試修改列的屬性,則錯誤可能來自缺少先決條件。
嘗試這個:
composer require doctrine/dbal
然后嘗試運行您的遷移。
從這里: https : //laravel.com/docs/master/migrations#modifying-columns
剛剛更換:;擴展名= pdo_mysql到php.ini文件中的extension = pdo_mysql。
如果您使用的是類似 manjaro 的基於拱門的系統
只是使用
sudo pacman -S php-sqlite
重啟你的 httpd
systemctl restart httpd
對於那些發現這篇文章的Windows 10 和 WAMP用戶,我有一個解決方案。 請訪問此鏈接。 它對我有用,很難找到解決方案,但我希望它將來可能對其他人有所幫助。
假設您使用 virtual box、vagrant 等進行了正常安裝。這可能會發生在新人身上。 PHP 可以安裝在您的 PC 上,但 Laravel 項目的所有 PHP 模塊都在您的 VM 上,因此要訪問您的 VM,請轉到您的 homestead 文件夾並輸入:vagrant ssh
然后轉到您的項目路徑並執行 php artisan migrate。
這是 MAC 和 MAMP 的問題。 嘗試在您的 .env 文件中添加以下內容:
DB_SOCKET= /Applications/MAMP/tmp/mysql/mysql.sock
它對我有用
這擴展了 Sven P 的回答:
在升級到運行 Ubuntu 20.04 和 Laravel 8.x 的新 DigitalOcean Droplet 時,我自己對這個錯誤消息感到困惑。 要記住的一件事是,您正在命令行上運行php artisan migrate
,這可能與您在 Apache 服務器上運行的 PHP 的版本不同。 我的 Laravel 測試應用程序運行順利,但我無法從命令行運行 Postgresql 相關命令。 然后我想起 PHP 的默認版本 Ubuntu 20.04 是 8.x,我已經配置我的 Apache 服務器運行 PHP 7.4。 本教程是我的救贖: 如何在 Ubuntu 20.04 LTS 上切換 PHP 版本。 檢查您的 PHP 版本。 果然,我的 CLI PHP 是 8.x 版,所以它沒有安裝和啟用 Postgresql 驅動程序。 按照教程,我跑了
sudo update-alternatives --config php
並選擇我的 PHP 7.4 安裝,現在當我登錄到我的 SSH 客戶端並檢查 PHP 版本時,它顯示 7.4,我已經安裝並啟用了 Postgresql。所以現在我的php artisan migrate
命令運行順利,我可以恢復工作.
此技巧與您正在使用的任何數據庫連接相關。 例如,如果您通常將 MySQL 用於您的 Apache 應用程序,如果您的 CLI PHP 版本不同並且沒有安裝和啟用 MySQL,您將遇到相同的錯誤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.