我在Windows 10计算机上安装了64位R版本3.6.0。
我使用以下代码在我的计算机上建立与本地MySQL数据库的连接
library(DBI)
con <- dbConnect( odbc::odbc(),"my_dsn")
其中my_dsn
是ODBC数据源管理器中定义的MySQL数据库的64位系统DSN。
在全新的R Studio或R GUI会话中执行此代码是可行的,并提供了预期的连接对象。因此,我将代码保存到C:/some_folder_location/my_script.R
的R脚本中。
现在,我希望从批处理文件中调用脚本。批处理文件包含以下代码:
cd /d C:\some_folder\
"C:\Program Files\R\R-3.6.0\bin\i386\Rscript.exe" my_script.R
pause
执行批处理文件时,出现以下错误:
错误:nanodbc / nanodbc.cpp:950:IM014:[Microsoft] [ODBC驱动程序 管理员]指定的DSN包含架构之间的不匹配 驱动程序和应用程序
执行停止
所以我的问题是,为什么批处理文件执行此代码时突然不起作用?错误消息似乎表明DSN存在问题,但我们知道,事实并非如此,因为脚本可以直接从控制台运行而不会出现问题。
答案 0 :(得分:0)
通常,由于32/64位驱动程序和32/64位平台不匹配而发生错误。根据平台类型(32位和64位),您可能安装了两个版本的R(即,两个不同的Rscript.exe
),而版本(3.2和3.5)进一步复杂。例如:
i386
的32位R版本,该子文件夹与64位DSN不兼容。R.home()
。
这与批处理文件夹相同吗?如果不是,请在此目录的bin中使用Rscript.exe
。要在R GUI或批处理工具中检查可用数据源,请调用以下命令并比较结果:
library(odbc)
odbcListDataSources() # SEE IF DSN SHOWS
odbcListDrivers() # SEE IF DSN USES AVAILABLE DRIVER