尝试将 Laravel Homestead 连接到 sqlsrv 数据库时出现网关错误
Bad Gateway errors when trying to connect Laravel Homestead to sqlsrv database
我使用 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>';
在我的控制器中,我只是尝试 return 使用 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
错误。我也尝试连接到网络上的不同数据库,但我仍然遇到相同的错误。
您似乎添加了新的 .env 变量。
确保在 config/database.php
中使用那些 *_SECOND
变量
database.php 中可能已经有一个部分,例如 env('DB_DATABASE', 'somedefaultvalue')
将其更改为 env('DB_DATABASE_SECOND', 'somedefaultvalue')
以用于所有添加的变量。
我使用 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>';
在我的控制器中,我只是尝试 return 使用 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
错误。我也尝试连接到网络上的不同数据库,但我仍然遇到相同的错误。
您似乎添加了新的 .env 变量。 确保在 config/database.php
中使用那些*_SECOND
变量
database.php 中可能已经有一个部分,例如 env('DB_DATABASE', 'somedefaultvalue')
将其更改为 env('DB_DATABASE_SECOND', 'somedefaultvalue')
以用于所有添加的变量。