【发布时间】:2021-09-24 09:53:45
【问题描述】:
我目前正在将本地制作的 laravel 应用程序转移到网络上。我正在使用 cpanel 进行共享主机。目前我的应用程序使用了三个不同的数据库。普通的 MySQL 数据库、microsoft azure 数据库和 microsoft sql server 数据库。目前我能够连接到三个数据库中的两个,因为我无法连接到 MSSQL 数据库。当我尝试连接到数据库时,出现以下错误:
[ODBC Driver 17 for SQL Server]Login timeout expired (SQL: SELECT * FROM tblGlue)
我知道在它尝试对用户进行身份验证之前出现了问题,因为我可以将我的用户名或密码更改为不存在的用户,但我得到了同样的错误。当我连接到我的 azure 数据库时,我必须使用存储过程 sp_set_firewall_rule 来允许我的网站的 IP 访问数据库。我必须为 MSSQL 做这样的事情吗,因为这是我唯一能想到的不同之处。这是数据库的配置。
'sqlsrv' => [
'driver' => 'sqlsrv',
'url' => env('DATABASE_URL'),
'host' => "xxxx",
'port' => "1433",
'database' => "TEAM",
'username' => "xxxx",
'password' => "xxxxx",
'charset' => 'utf8',
'prefix' => '',
'prefix_indexes' => true,
],
当我运行 DB::connection("sqlsrv")->getDatabaseName() 时,我得到了一个很好的结果。但是 DB::connection("sqlsrv")->getPdo() 给出了同样的错误。 我在想服务器以某种方式阻止了我网站的 IP。关于如何解决这个问题的任何想法。非常感谢任何帮助!
【问题讨论】:
-
只要确保您的本地 SQL Server 实例允许 SQL 身份验证。
-
@Zhorov 如果它不允许我在本地连接。因为当我在本地开发应用程序时,我可以毫无问题地连接到数据库
-
@Zhorov 我认为确实如此。当我登录 MS SQL 管理工作室时,我使用 SQL Server 身份验证登录
-
避免空闲连接,重新检查重试逻辑并检查是否配置了错误的 DNS、出站端口、ISP 提供商、代理或重定向
标签: sql sql-server laravel cpanel