【发布时间】:2020-06-01 12:37:30
【问题描述】:
Laravel 版本:7.13,SqlServer:2019
SQLSTATE[08001]: [Microsoft][ODBC Driver 17 for SQL Server]TCP Provider:
An existing connection was forcibly closed by the remote host (SQL: select * from [users]).
以上是我收到的错误消息。
我用核心 php 试过了,效果很好。
下面是php代码。
<?php
$serverName = "MYPCNAME";
$connectionInfo = array( "Database"=>"DBNAME", "UID"=>"sa", "PWD"=>'MyPassword');
$conn = sqlsrv_connect( $serverName, $connectionInfo);
if( $conn ) {
echo "Connection established.<br />";
if(($result = sqlsrv_query($conn,"SELECT * FROM users")) !== false){
while( $obj = sqlsrv_fetch_object( $result )) {
echo $obj->name.'<br />';
}
}
}else{
echo "Connection could not be established.<br />";
die( print_r( sqlsrv_errors(), true));
}
?>
我认为 SQL Server 配置是正确的。我安装了 php_sqlsrv、php_pdo_sqlsrv 扩展,它们显示为安装在phpinfo()
这是我的 Laravel 配置。
DB_CONNECTION=sqlsrv
DB_HOST=MYPCNAME
DB_PORT=1433
DB_DATABASE=DBNAME
DB_USERNAME=sa
DB_PASSWORD=MyPassword
以下是数据库配置文件。
'sqlsrv' => [
'driver' => 'sqlsrv',
'url' => env('DATABASE_URL'),
'host' => env('DB_HOST'),
'port' => env('DB_PORT'),
'database' => env('DB_DATABASE'),
'username' => env('DB_USERNAME'),
'password' => env('DB_PASSWORD'),
'charset' => 'utf8',
'prefix' => '',
'prefix_indexes' => true,
],
我也尝试将DB_HOST 更改为127.0.0.1,但出现了同样的问题。
我打算从用户表中获取用户。
我的想法:我在核心 php 中用127.0.0.1 更改了服务器名称,它与 laravel 显示完全相同的错误。
谁能帮帮我? 谢谢
【问题讨论】:
-
您是否尝试过更改您的 SQL Server 端口?
-
在 TCP/IP 配置中?
-
即使我更改了端口并重新启动了 SQLServer,核心 php 也运行良好。但不是 laravel。
-
在核心 php 中,如果我更改 $serverName = "MYPCNAME, 1434",它会显示与 laravel 相同的问题。我刚刚将端口更改为 1434。似乎是端口问题。
-
尝试运行
php artisan tinker,让我看看你的环境变量的输出
标签: php sql-server laravel laravel-5 database-connection