【问题标题】:Bad Gateway errors when trying to connect Laravel Homestead to sqlsrv database尝试将 Laravel Homestead 连接到 sqlsrv 数据库时出现错误的网关错误
【发布时间】:2018-06-18 11:30:02
【问题描述】:

我使用 Laravel v5 已经有一段时间了,连接到 homestead/vagrant 虚拟机并集成到本地 MySQL 数据库中。但是,我现在需要通过同一个虚拟机远程连接到我网络上的 MSSQL 数据库。

最初我在尝试使用sqlsrv 连接时收到driver not found 错误,但我通过安装php7.1-sybase 包克服了这个问题。我现在可以确认php -m 表示pdo_dblib 已安装并启用。

我已在.env 文件中设置连接详细信息以使用第二个数据库连接:

DB_CONNECTION_SECOND=sqlsrv
DB_HOST_SECOND=<server>
DB_PORT_SECOND=1433
DB_DATABASE_SECOND=<database>
DB_USERNAME_SECOND=<username>
DB_PASSWORD_SECOND=<password>

我可以从我的虚拟机成功 ping 服务器。

在我的模型中,我指定了$connection$table 参数:

/**
 * The database name used by the model.
 *
 * @var string
 */
protected $connection = 'sqlsrv';

/**
 * The database table used by the model.
 *
 * @var string
 */
protected $table = '<tablename>';

在我的控制器中,我只是尝试使用 where 子句返回单个记录:

/**
 * Display a listing of the resource.
 *
 * @return \Illuminate\Http\Response
 */
public function index()
{



    $employees = Employee::where( 'LastName', '=', 'Bloggs' )->get();



    return $employees;



}

但是,我尝试建立的任何连接都会导致502 Bad Gateway 错误。我也尝试连接到网络上的不同数据库,但仍然出现相同的错误。

【问题讨论】:

  • 您是否在 config/database.php 中配置了 *_SECOND 环境变量?
  • 我的database.php 文件已经包含一个sqlsrv 条目,所以我根本没有对此文件进行任何更改。我是否忽略了什么?
  • 会有env('DB_DATABASE', 'somedefaultvalue') 你需要改变它来反映你的环境变量。喜欢env('DB_DATABASE_SECOND', 'somedefaultvalue')
  • 谢谢@Mike,但是我现在收到Unable to connect: Adaptive Server is unavailable or does not exist (severity 9) 错误。不确定这是否相关或者我需要开始一个新线程。
  • 好像坏网关是固定的,你确定你的数据库已经启动并且你使用了正确的端口/地址

标签: laravel-5 pdo sqlsrv php-7.1


【解决方案1】:

您似乎添加了新的 .env 变量。 确保在 config/database.php 中使用那些 *_SECOND 变量

database.php 中可能已经有一个部分,例如 env('DB_DATABASE', 'somedefaultvalue') 将所有添加的变量更改为 env('DB_DATABASE_SECOND', 'somedefaultvalue')

【讨论】:

  • 您的建议是正确的,绝对解决了我的网关错误,所以谢谢。我提到的另一个错误是通过更改 /etc/freetds/freetds.conf 文件以将 tds 版本调整为 8.0 版来修复的。
猜你喜欢
  • 1970-01-01
  • 2014-06-10
  • 2020-07-13
  • 2017-08-20
  • 1970-01-01
  • 1970-01-01
  • 2019-02-14
  • 2014-03-08
  • 1970-01-01
相关资源
最近更新 更多