首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Laravel + mssql无法连接

Laravel + mssql无法连接
EN

Stack Overflow用户
提问于 2018-10-07 04:42:38
回答 1查看 541关注 0票数 0

我正在尝试让laravel与mssql一起工作,我总是得到这样的错误:

"SQLSTATEHY000无法连接:自适应服务器不可用或不存在(192.168.1.1:1433) (严重性9) (SQL: SELECT GETDATE()) (查看:/资源/视图/teste.blade.php)“

但是如果我尝试一个简单的脚本:

代码语言:javascript
运行
复制
<?php 
 try {
$hostname = "192.168.1.1";
$port = 1433;
$dbname = "some_db";
$username = "some_user";
$pw = "some_pass";

$dbh = new PDO ("dblib:host=$hostname:$port;dbname=$dbname","$username","$pw");
  } catch (PDOException $e) {
    echo "Failed to get DB handle: " . $e->getMessage() . "\n";
    exit;
  }

$stmt = $dbh->prepare("select getdate()");

  $stmt->execute();


  while ($row = $stmt->fetch()) {
    print_r($row);
  }
  unset($dbh); unset($stmt);
?>

它工作得很好...laravel是否需要任何特殊配置或不使用pdo?

EN

回答 1

Stack Overflow用户

发布于 2018-10-07 05:57:30

您可能希望查看Laravel的SqlServerConnector类getDSN()方法返回的DSN类型。

它位于: /vendor/laravel/framework/src/Illuminate/Database/Connectors/SqlServerConnector.php

在我的例子中,我使用的是ODBC,但是getDSN()方法默认返回Dblib DSN。(ODBC和Dblib都在getAvailableDrivers()数组中,但它首先检查Dblib。)

laravel v5.6中的SqlServerConnector类getDsn()方法:

代码语言:javascript
运行
复制
protected function getDsn(array $config)
{

   // checks for dblib first, by default. =(

    if (in_array('dblib', $this->getAvailableDrivers())) {
        return $this->getDblibDsn($config);
    } elseif ($this->prefersOdbc($config)) {
        return $this->getOdbcDsn($config);
    }

    return $this->getSqlSrvDsn($config);
}

更新:我刚刚注意到他们在laravel v5.7中颠倒了这一点:

代码语言:javascript
运行
复制
protected function getDsn(array $config)
{

   // Checking for ODBC first, before DBlib!

    if ($this->prefersOdbc($config)) {
        return $this->getOdbcDsn($config);
    }

    if (in_array('sqlsrv', $this->getAvailableDrivers())) {
        return $this->getSqlSrvDsn($config);
    } else {
        return $this->getDblibDsn($config);
    }
}

ODBC最终创建了一个覆盖的SqlServerConnector类,并将其注册到首先检查Per this answer的AppServiceProvider中。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52683179

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档