Laravel 5.7 无法连接到 Windows 上的 SQLSRV 数据库(找不到驱动程序)
Posted
技术标签:
【中文标题】Laravel 5.7 无法连接到 Windows 上的 SQLSRV 数据库(找不到驱动程序)【英文标题】:Laravel 5.7 can not connect to SQLSRV Database on Windows (could not find driver) 【发布时间】:2019-05-16 21:00:35 【问题描述】:我的环境文件
DB_CONNECTION=sqlsrv
DB_HOST=DESKTOP-ATB1EFG
DB_DATABASE=frontdesk
DB_USERNAME=sa
DB_PASSWORD=something_secret123
DB_PORT=1433
我已经用原始 php 进行了如下测试,它已成功连接并返回“已连接”字符串。
serverName = "DESKTOP-ATB1EFG";
$connectionOptions = array(
"Database" => "frontdesk",
"Uid" => "sa",
"PWD" => "something_secret123"
);
//Establishes the connection
$conn = sqlsrv_connect($serverName, $connectionOptions);
if($conn)
echo "Connected!";
else
echo "Failed";
但是,当我尝试使用 php artisan migrate 进行迁移时,它返回 QueryExeption
找不到驱动程序 (SQL: select * from sysobjects where type = 'U' 和名称 = 迁移)
异常跟踪:
1 PDOException::("找不到驱动程序")
C:\wamp64\www\frontdesk.sys\vendor\laravel\framework\src\Illuminate\Database\Connectors\Connector.php:70
2 PDO::__construct("dblib:host=DESKTOP-ATB1EFG:1433;dbname=frontdesk;charset=utf8", “sa”,“something_secret123”,[]) C:\wamp64\www\frontdesk.sys\vendor\laravel\framework\src\Illuminate\Database\Connectors\Connector.php:70
我已经检查了 php 7.2.10,它已经启用了扩展
extension=php_sqlsrv_72_nts_x64.dll
extension=php_pdo_sqlsrv_72_nts_x64.dll
extension=php_sqlsrv_72_ts_x64.dll
extension=php_pdo_sqlsrv_72_ts_x64.dll
【问题讨论】:
您不应该使用ts
(线程安全)和nts
(非线程安全)版本的sqlsrv扩展同时。另外,您是否确保在 CLI 的 php.ini 以及网络服务器(php-fpm 或其他)中都启用了扩展?
感谢您的评论,现在它正在工作。我需要添加到 php 文件夹中的 php.ini 和 apache 文件夹中的 php.ini 。谢谢。
【参考方案1】:
我通过添加扩展解决了这个问题:
extension=php_pdo_sqlsrv_71_ts_x64.dll
extension=php_sqlsrv_71_ts_x64.dll
到 php7.1.22 文件夹中的 php.ini
和 apache 文件夹中的 php.ini
。
谢谢。
【讨论】:
【参考方案2】:有时在 Xampp 中使用 Git Bash 运行迁移不起作用。在我的情况下,使用 Laragon 终端,或者您可以尝试 Windows 终端。
【讨论】:
【参考方案3】:此链接帮助我正确安装:
https://www.danhendricks.com/2017/11/installing-microsoft-sql-server-php-extensions-plesk-onyx/
我什至不需要进行 3. 步。您需要安装 Microsoft ODBC Driver for SQL Server 和 Microsoft Drivers for PHP for SQL Server。
然后您可以通过 Tinker 检查连接。请确保您在两种环境中都使用 sam PHP 版本。
php artisan tinker
DB::connection('your_sqlsrv_connection_name')->getPdo();
【讨论】:
【参考方案4】:目前 laravel 支持
mysql
PostgreSQL
SQLite
SQL Server
如果您使用其中任何一种,请按照提示操作
打开你的 .env 文件,你会发现一堆变量
你会发现这些
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret
例如:
只需将DB_CONNECTION
更改为您当前的数据库,例如SQLite
并填写您的凭据和用户名,数据库名称
在此处查看支持的数据库 https://laravel.com/docs/5.7/database#introduction
【讨论】:
是的,我已经更改了我的 env 文件,如下所示。 DB_CONNECTION=sqlsrv DB_HOST=DESKTOP-ATB1EFG DB_DATABASE=前台 DB_USERNAME=sa DB_PASSWORD=@@itmall.com.kh078 DB_PORT=1433以上是关于Laravel 5.7 无法连接到 Windows 上的 SQLSRV 数据库(找不到驱动程序)的主要内容,如果未能解决你的问题,请参考以下文章
无法将 Laravel 连接到 MailChimp(laravel 5.4)