我曾尝试在互联网上搜寻此消息,但似乎找不到解决方法,因此如果这是重复的操作,我会道歉,因为我似乎找不到任何可以帮助我解决问题的方法。
我已经安装了新的WAMP 3.1.3 Server,并且正在尝试运行Laravel 5.6应用程序。该应用程序连接到网络上的远程MSSQL数据库,并且我已使用相同的PHP版本(但Ubuntu)在Homestead测试环境中成功运行了该数据库。
在WAMP服务器(Microsoft Server 2016)上,我从https://github.com/Microsoft/msphpsql/releases/tag/v5.3.0安装了PHP 7.1 SQL驱动程序。我已经编辑了php.ini
文件以启用如下驱动程序:
[PHP_SQLSRV]
extension=php_sqlsrv_71_ts.dll
[PHP_PDO_SQLSRV]
extension=php_pdo_sqlsrv_71_ts.dll
我可以在WAMP托盘实用程序中直观地看到选中php_pdo_sqlsrv_71_ts
和php_sqlsrv_71_ts
并启用了PHP扩展。我已经运行php -m
,可以看到已安装并启用了以下模块:
...
PDO
pdo_mysql
pdo_sqlite
pdo_sqlsrv
...
我已经运行了phpinfo(),可以看到还安装了pdo_sqlsrv
:
但是,当我尝试连接到远程数据库时,出现以下错误:
Illuminate\Database\QueryException: SQLSTATE[28000]: [Microsoft][ODBC Driver 13 for SQL Server][SQL Server]Login failed for user ...
我正在使用窗口身份验证作为数据库登录名,并且已经在WAMP Server上安装了SQL Management Studio,并已使用Windows凭据成功连接到数据库,因此可以验证这不是用户名或密码问题。 / p>
我可以确认.env
文件中的所有详细信息都是正确的,并且与Homestead测试环境完全相同。
我继续尝试为SQL Server安装ODBC驱动程序13,但是,在安装时出现以下错误:
Installation of ODBC Driver 13 for SQL Server failed because a higher version already exists on the machine.
当我检查安装的程序时,它表明已经安装了版本11和13:
我还尝试了启用php_odbc
和php_pdo_odbc
模块,但这也没有任何区别。
我的WAMP设置如下:
我真的不知道还能尝试什么。也许我错过了什么?
答案 0 :(得分:0)
原来,我不喜欢尝试通过Windows身份验证访问数据库。多亏了这篇文章Microsoft ODBC Driver 13 for SQL Server : Login failed for user 'sa',我得以确定SQL抛出了一个关于不喜欢我的用户名/密码的错误。
奇怪的是,即使我可以使用Windows凭据通过同一台计算机上的Management Studio访问远程数据库,PHP驱动程序的故事也一定不同。
我针对该数据库创建了一个新的用户帐户,并且能够正常登录。