ces*_*are 9 php sql-server laravel sqlsrv azure-sql-database
我有一个连接 Azure 上的 sql server db 的 Laravel 应用程序。
在我的本地 Wamp 服务器上,该应用程序工作正常。我已经使用 docker 镜像安装在我的 linux 服务器上,并且没有连接 Azure DB。每次返回此错误消息:
SQLSTATE[HYT00]: [Microsoft][ODBC Driver 17 for SQL Server]Login timeout expired (SQL: select * from [mytable])
Run Code Online (Sandbox Code Playgroud)
MSDOBC 驱动程序、sqlsrv 和 pdo_sqlsrv 已正确安装。
我想这与laravel有关,因为如果我用php脚本查询数据库就没有问题。
我的 .ENV 文件有 db 设置:
DB_CONNECTION=sqlsrv
DB_HOST=db.database.windows.net
DB_PORT=1433
DB_DATABASE=db_name
DB_USERNAME=db_user
DB_PASSWORD=pwd
Run Code Online (Sandbox Code Playgroud)
Laravel log 和 docker log 没什么有趣的,我不知道如何解决。
Azure SQL 数据库仅支持表格数据流 (TDS) 协议(可通过 TCP 和默认端口 1433 访问)并使用其自己的基于 IP 的防火墙。因此,您可以尝试以下操作:
使用带有协议、服务器名称和端口的连接字符串。你的情况,你需要使用tcp:db.database.windows.net,1433的值DB_HOST。
添加 LINUX 服务器的 IP 地址作为防火墙规则。这在文档中进行了解释:
当计算机尝试从 Internet 连接到您的服务器时,防火墙首先根据连接请求的数据库的数据库级 IP 防火墙规则检查请求的原始 IP 地址。
如果地址在数据库级 IP 防火墙规则中指定的范围内,则连接将授予包含该规则的数据库。
如果地址不在数据库级 IP 防火墙规则的范围内,防火墙会检查服务器级 IP 防火墙规则。
如果地址在服务器级 IP 防火墙规则中的范围内,则连接被授予。服务器级 IP 防火墙规则适用于服务器管理的所有数据库。
如果地址不在任何数据库级或服务器级 IP 防火墙规则的范围内,则连接请求失败
| 归档时间: |
|
| 查看次数: |
642 次 |
| 最近记录: |