From: "しん" Date: 2009-06-02T15:02:31+09:00 Subject: [ruby-list:46051] Re: RoR on Linux で MS-SQL にアクセスしたい 出沢です ありがとうございます。 今なんとか通ったところです。 どういうわけか、odbc.ini, odbcinst.ini のプロパティ名の前に 空白があると無視されていました。 空白を取ったら通りました。 しかしいたるところにあるこれらの設定ファイルのサンプルはみな 空白が入っているので、何かまだあるのかもしれません。 廣江さんのご指摘の点は何度も見ており、正しく設定されていました。 トレースのためにソース大分いじっちゃったので、戻さなければ。。。 unixODBC-2.2.14/ini/iniOpen.c の int iniOpen() の中に do { if ( szLine[0] == cLeftBracket ) { _iniObjectRead( (*hIni), szLine, szObjectName ); iniObjectInsert( (*hIni), szObjectName ); } else if ( (strchr( cComment, szLine[0] ) == NULL ) && !isspace(szLine[0]) ) { _iniPropertyRead( (*hIni), szLine, szPropertyName, szPropertyValue ); iniPropertyInsert( (*hIni), szPropertyName, szPropertyValue ); } } while ( (ptr = uo_fgets( szLine, INI_MAX_LINE, hFile )) != NULL ); というのがあります。この else if は 「先頭の文字が '#' でも 空白でもない場合は」 と読めます。uo_fgets も行頭の空白を読み飛ばしては居ないようです。 私が取ってきたソースだけなのかなぁ、、、、 From: HIROE Shin Subject: [ruby-list:46050] Re: RoR on Linux で MS-SQL にアクセスしたい Date: Tue, 2 Jun 2009 13:37:06 +0900 > こんにちは。廣江です。 > しんさんが提示されている設定ファイル類を一見したところなにも問題ないように思えましたのでこちらの環境でやってみたところ、やはり問題なく接続できました。 > > そこで設定をいじって同じエラー(Data source name not found, and no default driver > specified)が出る条件を探したところ、 > > 1, odbcinst.ini先頭の[FreeTDS]とodbc.ini中で指定している"Driver=FreeTDS"の名前が異なる場合。 > 2,odbc.ini先頭の[MYPROJECT]とdatabase.yml中のDSNの指定"dsn: MYPROJECT"が異なる場合。 > > ぐらいでした。おそらく設定ファイル類は何度も確認されていることと思いますが、再度確認してみてください。 > > ちなみに先日、同僚も同じエラーで悩んでいましたが、そのときは1の場合で"Driver=Free TDS"(FreeとTDSの間にスペースが入ってた)でした。 > > ライブラリのバグの可能性も無いとは言い切れませんが、Data > Sourceが見つからないというのは何となく設定ミスの可能性が高いように感じます(違ってたらすみません)。 >