无法将SQLEXPRESS与Laravel 5.6连接 [英] Unable to connect SQLEXPRESS with Laravel 5.6

查看:108
本文介绍了无法将SQLEXPRESS与Laravel 5.6连接的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试将Laravel 5.6连接到我的SQLEXPRESS.

I'm trying to connect Laravel 5.6 to my SQLEXPRESS.

当我尝试将表从Laravel迁移到SQL时,出现此错误:

When I try to migrate tables from Laravel to SQL, I am getting this error:

SQLSTATE [08001]:[Microsoft] [用于SQL Server的ODBC驱动程序13] TCP 提供者:无法建立连接,因为目标计算机主动拒绝了该连接. (SQL:从类型='U'且名称= migrations的sysobjects中选择*)

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并对其进行了测试:

I have installed the sqlsrv extionsion to php and tested it:

<?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()中看到了扩展名;

I also see the extension in the phpinfo();

但是如果使用以下设置切换到LAravel 5.6:

But if switch to LAravel 5.6 with this settings:

我的环境:

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' => '',
        ],

    ],

我遇到一个错误. 我的服务器配置管理器如下所示:

I'm getting an error. My serverconfigurations manager looks like this:

我还可以连接SQL Server Management Studio 2017.

I can also connect with SQL Server Management Studio 2017.

推荐答案

首先,找到默认实例的端口号:

First, find port number of the default instance:

  • 检查端口号.如果您具有MS SQL Server Management Studio,请在主数据库中执行:xp_readerrorlog 0, 1, N'Server is listening on'

,带有命令提示符(会有很多行,但是您必须分析):netstat -ano

with command prompt (there will be a lot of rows, but you must analyze): netstat -ano

可能的解决方案:

  • 停止SQL Server Browser服务并再次测试(始终使用端口号).如果它在端口1433上运行,则可以使用TCP/IP连接到SQL Server的默认实例
  • 设置SQL Server不使用动态端口,并设置默认实例的端口号.
  • 在Laravel中更改配置/数据库,以找到一种跳过端口号的方法.我没有Laravel的经验,但我认为您可以尝试使用'port' => env('DB_PORT', null),

如何配置服务器以侦听特定端口:

How to configure server to listen to specific port:

  • 打开计算机管理\服务\ SQL Server配置管理器".
  • 展开"[实例名称]的SQL Server网络配置\协议",然后双击"TCP/IP".在"TCP/IP属性"对话框的"IP地址"选项卡上,转到"IPAll".将"TCP Dynamci端口"保留为空.将"TCP端口"设置为所需的端口号(可以默认为1433).
  • 在"SQL Server服务"中,双击"SQL Server浏览器".在服务"选项卡中,将开始模式"设置为手动".
  • 在"SQL Server服务"中,双击"SQL Server浏览器".在登录"中停止服务.
  • 在"SQL Server服务"中,双击SQL Server([实例名称]).在登录"中,重新启动服务.
  • 将客户端连接字符串设置为"server \ instance,port"格式.

好的起点是: SQL Server浏览器服务我希望这可以为您提供帮助.

I hope this can help you.

这篇关于无法将SQLEXPRESS与Laravel 5.6连接的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆