我正在尝试连接到我使用 DBI 启动的本地 Docker 映像中的数据库,但遇到了一些非常神秘的错误......我已经成功启动了 Docker 容器(下面显示了
docker ps -a
的结果) :
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
131ab042012c mcr.microsoft.com/mssql/server:2017-latest "/opt/mssql/bin/nonr…" 27 minutes ago Up 27 minutes 127.0.0.1:1433->1433/tcp admiring_northcutt
然后我尝试通过以下方式连接:
pool<- pool::dbPool(odbc::odbc(),
Driver = "ODBC Driver 17 for SQL Server",
Server = "localhost",
Database = "master",
UID = "sa",
PWD = "***********",
Port = 1433)
并收到错误:
Error: nanodbc/nanodbc.cpp:1021: 00000: [Microsoft][ODBC Driver 17 for SQL Server]Client unable to establish connection [Microsoft][ODBC Driver 17 for SQL Server]Invalid connection string attribute
使用
odbc::odbcListDrivers()
检查我的 odbc 驱动程序返回以下输出,因此驱动程序似乎存在。
name attribute value
1 ODBC Driver 17 for SQL Server Description Microsoft ODBC Driver 17 for SQL Server
2 ODBC Driver 17 for SQL Server Driver /usr/local/lib/libmsodbcsql.17.dylib
3 ODBC Driver 17 for SQL Server UsageCount 2
此外,执行容器并尝试通过命令连接到数据库:
docker exec -it <container-name> /bin/bash
/opt/mssql-tools/bin/sqlcmd -S 127.0.0.1 -U sa -P '<password>'
编辑:上述方法现在有效,我可以在数据库中主动查询。我知道错误不可能是由于登录凭据无效造成的,因为我使用的是与上面在容器中运行的完全相同的凭据。
同样的过程适用于同事,所以我想知道这是否是我的设置的本地问题。我们已经按照此链接中的建议比较了我们的 .ini 文件,它们是相同的,我已经干净地重新安装了 Docker,我什至运行了同事的相同容器,但没有成功。知道这里会发生什么吗?
电脑规格:
MacBook Pro (16-inch 2019) OS: macOS Monterey (version 12.2.1) Processor: 2.3 GHz 8-Core Intel Core i9 Memory: 16GB 2667MHz DDR4 Startup Disk: Macintosh HD Graphics: AMD Radeon Pro 5500M 4 GB
Rstudio 版本:2021.09.0 Build 351
OpenSSL 版本:1.1
我意识到我晚了一年多,但请尝试将
TrustServerCertificate = "yes"
添加到您的连接定义中。
Driver = "ODBC Driver 17 for SQL Server",
Server = "localhost",
Database = "master",
UID = "sa",
PWD = "***********",
Port = 1433,
TrustServerCertificate = "yes")