代码之家  ›  专栏  ›  技术社区  ›  M_Idrees

Laravel 5.6无法从PHP/Laravel连接MS SQL Server 2008 R2

  •  1
  • M_Idrees  · 技术社区  · 7 年前

    我正在使用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)
    

    有人能建议如何解决这个问题吗。

    在配置/数据库中。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 文件夹

    1 回复  |  直到 7 年前
        1
  •  1
  •   M_Idrees    7 年前

    我找到了这个问题的解决方案,分享可能会帮助其他人犯同样的错误。

    实际上,错误在于我是如何在中定义SQL连接参数的 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定义)不是实际值,但如果在中找不到特定键,则将用作默认值 .env 文件

    您可以阅读有关环境配置的更多信息 here

    因此,最后的代码段应该如下所示:

    'sqlsrv' => [
                'driver' => 'sqlsrv',
                'host' => 'MY-PC\MYSQL2008R2',
                'port' => '1433',
                'database' => 'ITEMMASTER',
                'username' => 'myuser',
                'password' => 'mypassword',
                'charset' => 'utf8',
                'prefix' => '',
            ],
    

    或者,另一种选择是在中定义这些参数 。环境 文件,位于应用程序的根目录中。