我试图在R(3.3.3)使用RStudio(1.0.143)和Filemaker Pro Advanced 15(15.0.3.305)之间建立连接。我尝试使用RODBC(1.3-15)创建连接。
到目前为止我:
http://www.popotojs.com/live/graph-results/index.html
Created a toy FM Pro database for testing
为我的玩具FM Pro数据库创建了一个名为test_r
的DSNFollowed these instructions for creating a DSN
成功测试了与test_r的连接
尝试通过以下两种方式连接到RStudio中的DSN失败:
fm_connection <- odbcConnect(dsn="test_r", uid="Admin", pwd="password")
返回以下错误:
[RODBC] ERROR: state IM002, code 0, message [unixODBC][Driver Manager]Data source name not found, and no default driver specifiedODBC connection failed
和
constr <- paste("driver={FileMaker ODBC}",
"server=127.0.0.1",
"database=test_r",
"uid=Admin",
"pwd=password",
sep=";")
fm_connection <- odbcDriverConnect(constr)
返回以下错误:
[RODBC] ERROR: state 01000, code 0, message [unixODBC][Driver Manager]Can't open lib 'FileMaker ODBC' : file not foundODBC connection failed
最后,我尝试使用这些(和其他)引用来解决此问题但未成功:
到目前为止似乎没有任何作用。我并不依赖于RODBC,但我确实需要一个适用于 Mac OS 的解决方案。任何帮助表示赞赏!
答案 0 :(得分:1)
以下是MacOS的一些重要的故障排除步骤。我在R中遇到了同样的错误,因此我觉得这个问题很有可能。 ODBC的设置可能相当复杂,因为涉及多个版本的软件组件。您已经在此特定FileMaker数据库中验证了ODBC共享。
验证unixodbc的安装:
ODBC管理器实际上是可选的。它管理下面描述的ini文件。但是在安装unixodbc之后,您还可以在没有ODBC管理器的文本编辑器中编辑这些ini文件。
要安装Homebrew,请执行此命令。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingTop="10dp">
<LinearLayout
android:id="@+id/anim_layout"
android:layout_width="280dp"
android:layout_height="200dp"
android:background="@color/grayBackground"
android:gravity="center"
android:layout_marginTop="75dp"
android:orientation="vertical"
android:padding="5dp">
<TextView
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_marginTop="25dp"
android:layout_weight="1.5"
android:gravity="center_horizontal"
android:text="Success"
android:textColor="@color/lightFont"
android:textSize="35sp"
android:textStyle="bold" />
<TextView
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_marginTop="10dp"
android:layout_weight="2"
android:gravity="center_horizontal"
android:text="Check you email for booking\nconfirmation We'll see you soon"
android:textSize="18sp" />
<Button
android:layout_width="150dp"
android:layout_height="wrap_content"
android:background="@color/cardview_dark_background"
android:text="OK"
android:textColor="@color/progressWhite"
android:textSize="16dp" />
</LinearLayout>
<ImageView
android:id="@+id/anim_image"
android:layout_width="150dp"
android:layout_height="150dp"
android:layout_centerHorizontal="true"
android:src="@drawable/success_icon" />
</RelativeLayout>
然后,安装unixodbc。这提供了系统级别的ODBC连接。
brew更新 brew install unixodbc
验证驱动程序:
驱动程序应安装在此处:
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
该文件夹将包含以下两个文件:
/Library/ODBC/FileMaker\ ODBC.bundle/Contents/MacOS
这是完整的驱动程序路径:
SetupToolTemplate fmodbc.so
验证配置文件:
文件夹
/Library/ODBC/FileMaker\ ODBC.bundle/Contents/MacOS/fmodbc.so
应包含以下文件:
/Library/ODBC
此外,unixodbc应仅包含最新版本。如果您有早期版本,请将其删除。现在,只有2.3.4。
FileMaker ODBC.bundle odbc.ini odbcinst.ini
还包含
/usr/local/Cellar/unixodbc/2.3.4
镜像odbc.ini和odbcinst.ini文件:
如上所述,这两个文件在两个不同的位置有两个副本。确保两者的内容相等。这意味着odbcinst.ini的两个副本都将定义驱动程序。 odbc.ini的两个副本都将包含连接。也许这不是100%必要的,但这是我需要做的。
使用isql进行测试:
odbc.ini odbcinst.ini
如果您在完成这些步骤后仍有任何问题,请分享其他详细信息,以便我可以更新答案。
答案 1 :(得分:0)
我使用odbc代替RODBC使用了一些新的R代码:
var cvs = ['div#cv0 p', 'div#cv1 p', 'div#cv2 p', 'div#cv3 p'];
for (i = 0; i < losotro.length; i++) {
console.log(cvs[i]);
var bindedFunc = (function(i) {
return function() {
console.log(i)
}
})(i)
jQuery(losotro[i]).click(bindedFunc);
}