簡體   English   中英

php 工匠遷移拋出 [PDO 異常] 找不到驅動程序 - 使用 Laravel

[英]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 后,我收到了這個錯誤,包括另外兩個錯誤。

錯誤:

  1. laravel/framework v5.2.14 需要 ext-mbstring * -> 系統中缺少請求的 PHP 擴展 mbstring。

  2. phpunit/phpunit 4.8.22 需要 ext-dom * -> 系統中缺少請求的 PHP 擴展 dom。

  3. [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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM