我正在使用Laravel 5.6,并尝试连接MS SQL Server 2008 R2,所有这些都在本地计算机上运行。我有一个名为“ItemMaster”的测试数据库,它与我的C#.Net应用程序一起工作正常。
当我尝试从Laravel连接相同的数据库时,我收到此错误:
SQLSTATE[08001]: [Microsoft][ODBC Driver 11 for SQL Server]TCP Provider: No connection could be made because the target machine actively refused it. (SQL: select * from ITEM_CATEGORY)
有人可以建议如何解决这个问题。
在config / database.php中,我设置了sqlsrv
驱动程序,如下所示:
'sqlsrv' => [
'driver' => 'sqlsrv',
'host' => env('DB_HOST', 'MY-PC\MYSQL2008R2'),
'port' => env('DB_PORT', '1433'),
'database' => env('DB_DATABASE', 'ITEMMASTER'),
'username' => env('DB_USERNAME', 'myuser'),
'password' => env('DB_PASSWORD', 'mypassword'),
'charset' => 'utf8',
'prefix' => '',
],
在我的控制器内的这一行上获取错误:
$items = DB::connection('sqlsrv')->select('select * from ITEM_CATEGORY');
我安装了Microsoft Drivers 4.3 for PHP for SQL Server并将文件php_pdo_sqlsrv_71_ts_x86.dll
复制到php/ext
文件夹。
答案 0 :(得分:1)
我找到了解决这个问题的方法,分享可能有助于其他人犯同样的错误。
实际上,错误是我在config/database.php
'sqlsrv' => [
'driver' => 'sqlsrv',
'host' => env('DB_HOST', 'MY-PC\MYSQL2008R2'),
'port' => env('DB_PORT', '1433'),
'database' => env('DB_DATABASE', 'ITEMMASTER'),
'username' => env('DB_USERNAME', 'myuser'),
'password' => env('DB_PASSWORD', 'mypassword'),
'charset' => 'utf8',
'prefix' => '',
],
在这个代码段中,我实际上将我的参数定义为env()
的第二个参数,其中(be-definition)不是实际值,但如果在{{中找不到该特定键,则将用作默认值1}}文件。
您可以阅读有关环境配置here
的更多信息所以最后的代码段应该是这样的:
.env
或者另一种选择可能是在应用程序的根目录中的'sqlsrv' => [
'driver' => 'sqlsrv',
'host' => 'MY-PC\MYSQL2008R2',
'port' => '1433',
'database' => 'ITEMMASTER',
'username' => 'myuser',
'password' => 'mypassword',
'charset' => 'utf8',
'prefix' => '',
],
文件中定义这些参数。