将 Laravel 与 SQL Server 数据库连接总是显示错误“找不到驱动程序”

我想将 Laravel(版本 8)与 SQL Server 数据库(SQL Server 2008 R2)连接起来。

我已经完成了安装并遵循了一些教程,其中包含 following 之类的步骤,其中我安装的版本适应 SQL Server 2008 R2,例如 this guide

  1. 为 SQL Server 安装了 Microsoft® ODBC Driver 17(因为 this ,我选择了版本 17)

2.通过获取2个文件安装PHP驱动程序5.6版,即我从 php_pdo_sqlsrv_73_ts.dll 获得的 php_sqlsrv_73_ts.dllhere (我根据 this 选择了5.6版)

3.我把上面2个文件放在 C:larragonbinphpphp-7.3.9-Win32-VC15-x64ext

  1. 我在 php.ini 中启用了扩展,如下所示: extension=pdo_sqlsrv_73_ts , extension=sqlsrv_73_ts 。它成功了,当我签入 php.info 时,它显示 pdo_sqlsrv

  2. 然后我在 Laravel 的 .env 上配置数据库连接是这样的( I've created a database with that name ):

DB_CONNECTION=sqlsrv
DB_HOST=192.168.101.103:86
DB_PORT=1433
DB_DATABASE=testlaravel
DB_USERNAME=faisallocal
DB_PASSWORD=faisallocal
  1. 然后我在终端上运行 php artisan migrate

但我总是收到这样的错误:

[照亮数据库查询异常

找不到驱动程序 (SQL: select * from sys.sysobjects where id = object_id(migrations) and xtype in ('U', 'V'))

at C:larragonwwwredeempointappapivendorlaravelframeworksrcIlluminateDatabaseConnection.php:712 708▕ // 如果尝试运行查询时发生异常,我们将格式化错误 709▕ // 消息以包含与 SQL 的绑定,这将使此异常成为 710▕ // 对开发人员更有帮助,而不仅仅是数据库的错误。 711▕ catch (Exception $e) { 712▕ throw new QueryException( 713▕ $query, $this->prepareBindings($bindings), $e 714▕ ); 715▕}716▕}

1 C:larragonwwwredeempointappapivendorlaravelframeworksrcIlluminateDatabaseConnectorsConnector.php:70 PDOException::(“找不到驱动程序”)

2 C:larragonwwwredeempointappapivendorlaravelframeworksrcIlluminateDatabaseConnectorsConnector.php:70 PDO::__construct("dblib:host=192.168.101.103:86:1433;dbname=testlaravel;charset=utf8", "faisallocal", "faisallocal", [])]

我错过了什么?我在本地进行了这个测试,并且我有不同版本的 XAMPP 和 Laragon,但是如果我有不同的端口不是可以吗?

请帮助任何有经验并对此提出建议的人,我已经被困在这一点上好几个星期了..

谢谢

stack overflow Connecting Laravel with SQL Server database always shows error "could not find driver"
原文答案
author avatar

接受的答案

所以这一切都是因为检测到不同版本的 PHP 和 SQL Server 驱动程序。

有关信息,我有 3 个本地服务器,即:

  1. XAMPP 1.7.3,
  2. 3, ( I forgot the version details ),
  3. 和拉贡。

出现的问题是,当我想使用 Laragon 服务器 AND 我使用本地终端/命令提示符 ( Shortcut: Windows + CMD ) 开发应用程序时,来自其他本地服务器的 PHP 版本将相互冲突。

当我运行 Laravel 命令时,检查 PHP 版本或其他什么,本地命令提示符会将我定向到我安装的以上 XAMPP 版本,因此您在 Laragon 中安装的任何 .dll 或插件都不会被检测到!

最后我能够完成我的安装并根据我想要的版本执行很多 CMD 命令,是如何使用 Laragon 的内置 CMD/Terminal ( Click on Terminal under Laragon application )

从这个终端,您安装的所有 .dll 插件,以及您输入的所有 cmd 命令,都将与您使用的 Laragon 版本相匹配,它们不会被转移到另一个本地服务器! :D


答案:

作者头像

php_pdo_sqlsrv_73_ts.dll 这取决于你的 php 版本

例如:php_pdo_sqlsrv_73_ts.dll 适用于 php 7.3

在下一个链接中,您可以看到此信息。

https://learn.microsoft.com/en-us/sql/connect/php/system-requirements-for-the-php-sql-driver?view=sql-server-ver15