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

aoyhnmkz  于 2023-03-11  发布在  PHP
关注(0)|答案(2)|浏览(232)

我想连接Laravel(版本8)和SQL Server数据库(SQL Server 2008 R2)。
我已经完成了安装,并遵循了一些教程中的步骤,如following,其中我安装的版本适用于SQL Server 2008 R2,如this guide
1.已安装Microsoft® ODBC驱动程序17 for SQL Server(因此我选择了版本17)
1.安装PHP驱动程序版本5.6采取2个文件,即php_pdo_sqlsrv_73_ts.dllphp_sqlsrv_73_ts.dll,我从here(我选择了版本5.6的基础上)
1.我把上面的两个文件放在C:\larragon\bin\php\php-7.3.9-Win32-VC15-x64\ext
1.我在php.ini中启用了扩展,如下所示:extension=pdo_sqlsrv_73_tsextension=sqlsrv_73_ts.成功,当我签入php.info时,它显示pdo_sqlsrv
1.然后,我在Laravel的.env上配置了数据库连接,如下所示(* 我已经用这个名称创建了一个数据库 *):

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:从sys.sysobjects中选择 *,其中id =对象id(迁移)和x类型(“U”、“V”))
at C:\larragon\www\redeempointappapi\vendor\laravel\framework\src\Illuminate\Database\Connection.php:712 708//如果在尝试运行查询时发生异常,我们将格式化错误709//消息以包括与SQL的绑定,这将使该异常710//对开发人员更有帮助,而不仅仅是数据库的错误。711 catch(Exception $e){ 712 throw new QueryException(713 $query,$this-〉prepareBindings($bindings),$e 714);七一五七一六
1 C:\larragon\www\redeempointappapi\vendor\laravel\framework\src\Illuminate\数据库\连接器\连接器。php:70 PDF文件异常::(无法找到驱动程序)
2 C:\拉腊贡\www\redeempointappapi\供应商\拉腊维尔\框架\src\照明\数据库\连接器\连接器。php:70 PDO::__construct(“数据库目录:主机= 192. 168. 101. 103:86:1433;数据库名称=试验数据库;字符集=utf8”,“费萨尔本地”,“费萨尔本地”,[])]
我错过了什么?我在本地做了这个测试,我有不同版本的XAMPP和Laragon,但是如果我有不同的端口,不是也可以吗?
请帮助任何有经验和建议的人,我已经在这一点上停留了几个星期。
谢谢

4nkexdtk

4nkexdtk1#

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

3gtaxfhh

3gtaxfhh2#

所以这一切都是因为检测到不同版本的PHP和SQL Server驱动程序。
作为参考,我有3个本地服务器,即:

  1. XAMPP 1.7.3,
  2. XAMPP 3.?.?(* 我忘记了版本详细信息 ),
    1.还有拉拉根。
    出现的问题是,当我想使用Laragon服务器开发应用程序时,我使用本地终端/命令提示符(
    快捷方式:Windows + CMD*),则来自其他本地服务器的PHP版本将相互冲突。
    当我运行一个Laravel命令,检查PHP版本,或者其他什么的时候,本地命令提示符会引导我到我已经安装的XAMPP版本,所以你在Laragon中安装的任何.dll或插件都不会被检测到!
    最后,我能够完成我的安装,并根据我想要的版本做了很多CMD命令,是如何使用内置的CMD/终端从Laragon(* 点击终端下Laragon应用程序 *)
    从这个终端,您安装的所有.dll插件,以及您输入的所有cmd命令,将匹配您正在使用的Laragon版本,它们不会偏离到另一个本地服务器!:D

相关问题