【发布时间】:2018-05-31 13:01:20
【问题描述】:
我正在尝试将 Laravel 5.6 连接到我的 SQLEXPRESS。
当我尝试将表从 Laravel 迁移到 SQL 时,我收到此错误:
SQLSTATE[08001]: [Microsoft][ODBC Driver 13 for SQL Server]TCP 提供者:由于目标机器主动拒绝,无法建立连接。 (SQL: select * from sysobjects where type = 'U' and name = migrations)
我已经将sqlsrv extionsion安装到php并进行了测试:
<?php
$serverName = "MYNAME\\SQLEXPRESS";
$connectionInfo = array( "Database"=>"Portal", "UID"=>"sa", "PWD"=>"mySecretPwd");
$conn = sqlsrv_connect( $serverName, $connectionInfo);
if( $conn ) {
echo "Connection established.<br />";
}else{
echo "Connection could not be established.<br />";
die( print_r( sqlsrv_errors(), true));
}
?>
连接建立成功。
我还在 phpinfo() 中看到了扩展;
但如果使用此设置切换到 Laravel 5.6:
我的环境:
DB_CONNECTION=sqlsrv
DB_HOST=MYNAME\\SQLEXPRESS
DB_PORT=1433
DB_DATABASE=Portal
DB_USERNAME=sa
DB_PASSWORD=mySecredPwd
我的配置/数据库:
'default' => env('DB_CONNECTION', 'sqlsrv'),
'connections' => [
.....
'sqlsrv' => [
'driver' => 'sqlsrv',
'host' => env('DB_HOST', 'MYNAME\\SQLEXPRESS'),
'port' => env('DB_PORT', '1433'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'charset' => 'utf8',
'prefix' => '',
],
],
我遇到了一个错误。 我的服务器配置管理器如下所示:
我还可以连接 SQL Server Management Studio 2017。
【问题讨论】:
-
我认为这是一个错字,但您将 DB_DATABASE 参数设置为
forge,而它应该是Portal。 -
@JacobH:如果
.env中不存在值,这只是默认值。 -
好吧,这似乎完全倒退了,提供一个默认值作为参数来覆盖存储在其他地方的设置。无论如何,也许尝试不使用实例?
-
你能用你的 PHP 脚本与 $serverName = "MYNAME\\SQLEXPRESS,1433" 建立连接吗?
-
@Zhorov。如果我将 1433 端口添加到 $serverName 我得到与 Laravel 完全相同的错误
标签: php sql-server laravel ssms sqlsrv