【问题标题】:Laravel 5.6 framework and unable to make connection to mssql server using odbc_connect()Laravel 5.6 框架,无法使用 odbc_connect() 连接到 mssql 服务器
【发布时间】:2019-10-18 08:35:44
【问题描述】:

在尝试标准 Laravel 数据库配置 sqlsrv 模板失败后,我已转向直接 PHP odbc_connect() 方法,尝试通过 Laravel 5.6 连接到我的工作 SQL Server。

我正在公司防火墙后面构建仪表板,另一位开发人员已使用以下方法成功创建了连接:

$resource = odbc_connect('Driver={ODBC Driver 13 for SQL Server};Server=xxxxxxxxxx;Trusted_Connection=yes;ApplicationIntent=ReadOnly', null, null)

上面的 odbc_connect() 设置为使用我登录的当前网络 AD Windows 身份验证,但是,我从 Laravel 收到以下 ErrorException:

odbc_connect(): SQL error: [Microsoft][ODBC Driver 13 for SQL Server]Login timeout expired, SQL state S1T00 in SQLConnect

php信息:

  • ODBC 库:unixODBC
  • PDO 驱动程序:mysql、odbc、sqlite、sqlsrv
  • PDO_ODBC:启用,严格匹配
  • PHP 版本 7.1.10

我可以成功连接使用 Windows 身份验证方法的 SQL Server GUI 客户端(RazorSQL 和 Navicat)。请注意,我运行的是 MAC OSX Sierra。

任何帮助将不胜感激。

【问题讨论】:

  • Login timeout expired 似乎需要更多时间来连接。

标签: php sql-server laravel


【解决方案1】:

在 obdcinst.ini 文件中找到了适用于 SQL Server 的 ODBC 驱动程序 13,该文件链接到一个无法识别 Windows 身份验证的文件。解决方案是使用 unixodbc brew install freetds 创建一个识别身份验证的库。然后我交换了lib。身份验证后,我确实添加了用户名和密码,但是用户名有一个双反斜杠,因此,用户名将是 YOURDOMAIN\username。出于某种原因,Laravel 会看到这一点并将其视为域登录,同时删除反斜杠,请求被发送到服务器,然后允许自己成功登录以按预期执行查询。

希望这对处于同样情况的任何人有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-05
    • 1970-01-01
    • 1970-01-01
    • 2013-12-22
    相关资源
    最近更新 更多