2013-06-13 2 views
1

데이터베이스와 레일스에 관해서 조금 질문이 있습니다.레일즈에 대한 데이터베이스 상호 작용

버추얼 박스 -> 우분투 DB -> MSSQL 2008

그래서 내가 FreeTDS를 AND TinyTDs를 통해 MSSQL과 값을 쿼리 내 우분투를 연결 할 수 있었다. 그런 다음 database.yml 파일에 구현했습니다. 문제는 응용 프로그램 내부에서 동일한 호출을 할 때 -1 (Fixnum)을 얻는 반면 연결을 테스트 할 때 쿼리하면 올바른 결과를 얻을 수 있다는 것입니다.

응용 프로그램 -> database.yml을 -X> ODBC.INI -> ODBCINST.INI -> MSSQL

나는 여기서 X는 내 프로그램이 실패하면, 그건 생각합니다. 응용 프로그램 내부에서 제대로 연결을 확인하고 데이터베이스 이름을 잘못 입력해도 오류가 발생하므로 인식하고 있습니다. 그래서 나는 진정으로 X 단계가 문제라고 믿습니다.

부품을 1 초 안에 게시합니다.

APP

class Order < ActiveRecord::Base 
    #self.table_name = "orders" 
    def self.try_t 
     establish_connection :development 
     Order.connection.execute("select count(*) from BBOrders") 
    end 
end 

database.yml을

development: 
    adapter: sqlserver 
    dsn: K_Connection 
    #dsn: mydsn 
    mode: odbc 
    #mode: dblib 
    encoding: utf8 
    database: KTrade 
    host: xxx.xxx.xxx.xxx 
    username: tr 
    password: tr2 

ODBC.INI

[K_connection] 
Driver=FreeTDS 
Description=ODBC connection via FreeTDS 
Trace=Yes 
Server=xxx.xxxx.xxx.xxx 
Database=KTrade 
TDS_Version=7.0 
Port=1433 

ODBCINST.INI

[FreeTDS] 
Description=TDS driver (Sybase/MS SQL) 
Driver = /usr/local/lib/libtdsodbc.so 
Setup = /usr/local/lib/libtdsS.so 
CPTimeout= 
CPReuse= 
FileUsage=2 
UsageCount=2 

MSSQL 2008 데이터베이스 이름 - KTrade. 액세스 표 - dbo.BBOrders (. DBO는 생략 할 수있다)

+0

에 메신저와 메신저 점점 Fixnum이라는 너무 작동 :-( – Muflix

+0

그래, 난 그냥 윈도우에서 VM웨어의 그것을 밖으로 시도하고 아직도 -1을 반환 – Muflix

답변