无法将 SQLEXPRESS 与 Laravel 5.6 连接
Unable to connect SQLEXPRESS with Laravel 5.6
我正在尝试将 Laravel 5.6 连接到我的 SQLEXPRESS。
当我尝试将表从 Laravel 迁移到 SQL 时,出现此错误:
SQLSTATE[08001]: [Microsoft][ODBC Driver 13 for SQL Server]TCP
Provider: No connection could be made because the target machine actively refused it. (SQL: select * from sysobjects where type = 'U' and name = migrations)
我已经将 sqlsrv 扩展安装到 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
我的config/database:
'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。
首先,找到默认实例的端口号:
检查端口号。如果你有 MS SQL Server Management Studio,执行:xp_readerrorlog 0, 1, N'Server is listening on'
in master database
带命令提示符(会有很多行,但一定要分析):netstat -ano
可能的解决方案:
- 停止SQL 服务器浏览器服务并再次测试,始终使用端口号。如果端口 1433
上的 运行,则可以使用 TCP/IP 连接到 SQL 服务器的默认实例
- 设置SQL服务器不使用动态端口并设置默认实例的端口号。
- 更改Laravel中的config/database以找到跳过端口号的方法。我没有使用 Laravel 的经验,但我认为您可以尝试使用
'port' => env('DB_PORT', null),
如何配置服务器监听特定端口:
- 打开“计算机 Management\Services\SQL 服务器配置管理器”。
- 展开“[实例名称]的SQL服务器网络Configuration\Protocols”并双击“TCP/IP”。在“TCP/IP 属性”对话框的“IP 地址”选项卡上,转到“IPAll”。将“TCP Dynamci 端口”留空。将“TCP 端口”设置为所需的端口号(可以是默认的 1433)。
- 在“SQL服务器服务”中,双击SQL服务器浏览器。在“服务”选项卡中将“启动模式”设置为“手动”。
- 在“SQL服务器服务”中,双击SQL服务器浏览器。在“登录”中停止服务。
- 在“SQL服务器服务”中,双击SQL服务器([实例名称])。在“登录”中重新启动服务。
- 将客户端连接字符串设置为“server\instance,端口”格式。
好的起点是:
SQL Server Browser Service and Configure a Server to Listen on a Specific TCP Port
希望对您有所帮助。
我正在尝试将 Laravel 5.6 连接到我的 SQLEXPRESS。
当我尝试将表从 Laravel 迁移到 SQL 时,出现此错误:
SQLSTATE[08001]: [Microsoft][ODBC Driver 13 for SQL Server]TCP Provider: No connection could be made because the target machine actively refused it. (SQL: select * from sysobjects where type = 'U' and name = migrations)
我已经将 sqlsrv 扩展安装到 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
我的config/database:
'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。
首先,找到默认实例的端口号:
检查端口号。如果你有 MS SQL Server Management Studio,执行:
xp_readerrorlog 0, 1, N'Server is listening on'
in master database带命令提示符(会有很多行,但一定要分析):
netstat -ano
可能的解决方案:
- 停止SQL 服务器浏览器服务并再次测试,始终使用端口号。如果端口 1433 上的 运行,则可以使用 TCP/IP 连接到 SQL 服务器的默认实例
- 设置SQL服务器不使用动态端口并设置默认实例的端口号。
- 更改Laravel中的config/database以找到跳过端口号的方法。我没有使用 Laravel 的经验,但我认为您可以尝试使用
'port' => env('DB_PORT', null),
如何配置服务器监听特定端口:
- 打开“计算机 Management\Services\SQL 服务器配置管理器”。
- 展开“[实例名称]的SQL服务器网络Configuration\Protocols”并双击“TCP/IP”。在“TCP/IP 属性”对话框的“IP 地址”选项卡上,转到“IPAll”。将“TCP Dynamci 端口”留空。将“TCP 端口”设置为所需的端口号(可以是默认的 1433)。
- 在“SQL服务器服务”中,双击SQL服务器浏览器。在“服务”选项卡中将“启动模式”设置为“手动”。
- 在“SQL服务器服务”中,双击SQL服务器浏览器。在“登录”中停止服务。
- 在“SQL服务器服务”中,双击SQL服务器([实例名称])。在“登录”中重新启动服务。
- 将客户端连接字符串设置为“server\instance,端口”格式。
好的起点是: SQL Server Browser Service and Configure a Server to Listen on a Specific TCP Port
希望对您有所帮助。