【问题标题】:Connecting to Sql Server with Laravel使用 Laravel 连接到 Sql Server
【发布时间】:2018-12-17 23:44:50
【问题描述】:

我刚刚通过 Composer 全新安装了 Laravel,并将 Config/database.php 更改为

    'default' => 'sqlsrv',

并更改了连接的设置

    'sqlsrv' => [
        'driver'   => 'sqlsrv',
        'host'     => env('DB_HOST', 'Host IP'),
        'database' => env('DB_DATABASE', 'WebServices'),
        'username' => env('DB_USERNAME', 'User'),
        'password' => env('DB_PASSWORD', 'Password'),
        'prefix'   => '',
    ],

但我在尝试连接时收到此错误。

     1/1
PDOException in Connector.php line 47:
SQLSTATE[08001]: [Microsoft][ODBC Driver 11 for SQL Server]Named Pipes Provider: Could not open a connection to SQL Server [2].

 in Connector.php line 47
at PDO->__construct('sqlsrv:Server=localhost;Database=homestead', 'homestead', 'secret', array('0', '2', '0', false)) in Connector.php
line 47 at Connector >createConnection('sqlsrv:Server=localhost;Database=homestead', array('driver' => 'sqlsrv', 'host' => 'localhost', 'database' => 'homestead', 'username' => 'homestead', 'password' => 'secret', 'prefix' => '', 'name' => 'sqlsrv'), array('0', '2', '0', false)) in SqlServerConnector.php
line 29 at SqlServerConnector->connect(array('driver' => 'sqlsrv', 'host' => 'localhost', 'database' => 'homestead', 'username' => 'homestead', 'password' => 'secret', 'prefix' => '', 'name' => 'sqlsrv')) in compiled.php 
line 10673 at ConnectionFactory->createSingleConnection(array('driver' => 'sqlsrv', 'host' => 'localhost', 'database' => 'homestead', 'username' => 'homestead', 'password' => 'secret', 'prefix' => '', 'name' => 'sqlsrv')) in compiled.php 
line 10669 at ConnectionFactory->make(array('driver' => 'sqlsrv', 'host' => 'localhost', 'database' => 'homestead', 'username' => 'homestead', 'password' => 'secret', 'prefix' => ''), 'sqlsrv') in compiled.php line 10587

我不知道它为什么这样做

【问题讨论】:

  • SQL-Server 是否启动并运行?是否有一个名为homestead 的数据库,用户名homestead 和密码secretlocalhost 上?
  • .env 文件做到了,我不知道那个我只是假设它是 Config/Database.php
  • 哦,好的 :) 在配置文件中,使用env() 函数获取可以在.env 文件中定义的环境变量。如果没有设置变量,你可以传递一个默认值作为第二个参数。

标签: php laravel


【解决方案1】:

如果 isset,你能检查 app/config/local/database.php 文件吗?可能您的配置信息是从那里获取的。

【讨论】:

    【解决方案2】:

    我的环境:

    • Windows Server 2008
    • SQL Server Express 2014
    • Xampp win32 与 PHP 5.6.23
    • Laravel 5.2

    原因:由于 TCP/IP 协议问题,PDO 连接失败。 SQL Server 2014 Configuration Manager

    转到 >> 配置工具

    1. SQL Server 2014 配置管理器
    2. SQL Server 网络配置
    3. “your_sqlserver_service”的协议
    4. 右键点击TCP/IP,选择属性
    5. 选择 IP 地址选项卡
    6. 向下滚动到 IPALL
    7. 在 TCP 端口,输入 1433
    8. 确定并重新启动 SQL Server 服务。

    让我们试试吧。如果我错了,请随时纠正我。

    【讨论】:

      【解决方案3】:

      当我在虚拟主机上使用 Xamp 时,我也遇到了这个错误。我将端口从 80 更改为 8000,但忘记更改 vhosts 文件以反映端口更改。只是想我会为任何其他可怜的灵魂添加这个。

      【讨论】:

        猜你喜欢
        • 2014-05-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-01-20
        • 2015-10-30
        • 2011-11-18
        • 2016-04-14
        相关资源
        最近更新 更多