2014-06-22 2 views
3

이것은 question과 유사합니다. 그러나 그 질문에 게시 된 answer은 저에게 효과적이지 않았습니다. 내 Mac에 freetds를 설치했습니다. 나는 내 GemFile에서 다음을 지정했다. 나는 또한 IRB에서 푸른 SQL 에 성공적으로를 연결할 수 있습니다tiny_tds : 분할 오류

tsql -H host_name.database.windows.net -U user_name -D database_name -p 1433 -P password 

gem 'tiny_tds' 
gem 'activerecord-sqlserver-adapter', '~> 4.1.0' 

그리고 난 다음을 사용하여 푸른 SQL 성공적으로에 연결할 수 있습니다. 그런 다음 뒤에

[BUG] Segmentation fault at 0x007fff5f3ffff8 
ruby 2.1.1p76 (2014-02-24 revision 45161) [x86_64-darwin12.0] 

나는 다음과 같은 오류가 마이그레이션,

Control frame information 
C level backtrace information 
Other runtime information 

마지막으로 끝나는,

:

require 'tiny_tds' 
client = TinyTds::Client.new(:username => '[email protected]_name', :password => 'password', :host =>'host_name.database.windows.net') 

하지만 실행할 때, 레이크 DB는

[NOTE] 
You may have encountered a bug in the Ruby interpreter or extension libraries. 
Bug reports are welcome. 
For details: http://www.ruby-lang.org/bugreport.html 

Abort trap: 6 

누구든지 아이디어 나 제안을 공유 할 수 있습니까?

업데이트 : 내 database.yml을이처럼 보이는

development: 
    #adapter: sqlite3 
    #database: db/development.sqlite3 
    #pool: 5 
    #timeout: 5000 
    adapter: sqlserver 
    mode: dblib 
    dataserver: 
    host: host_name.database.windows.net 
    port: 1433 
    database: database_name 
    username: user_name 
    password: password 
    timeout: 5000 
    azure: true 

은 내가

2.1.1 :028 > ActiveRecord::Base.establish_connection(
2.1.1 :029 >  :adapter => "sqlserver", 
2.1.1 :030 >  :host  => "host_name.database.windows.net", 
2.1.1 :031 >  :username => "user_name", 
2.1.1 :032 >  :password => "password", 
2.1.1 :033 >  :database => "database_name" 
2.1.1 :034?> ) 

, IRB에서 다음을 실행하고 다음과 같은 응답,

=> #<ActiveRecord::ConnectionAdapters::ConnectionPool:0x00000101e8c798 @mon_owner=nil, @mon_count=0, @mon_mutex=#<Mutex:0x00000101e8c748>, @spec=#<ActiveRecord::ConnectionAdapters::ConnectionSpecification:0x00000101f3ceb8 @config={:adapter=>"sqlserver", :host=>"host_name.database.windows.net", :username=>"user_name", :password=>"password", :database=>"database_name"}, @adapter_method="sqlserver_connection">, @checkout_timeout=5, @dead_connection_timeout=5, @reaper=#<ActiveRecord::ConnectionAdapters::ConnectionPool::Reaper:0x00000101e8c720 @pool=#<ActiveRecord::ConnectionAdapters::ConnectionPool:0x00000101e8c798 ...>, @frequency=nil>, @size=5, @reserved_connections=#<ThreadSafe::Cache:0x00000101e8c6d0 @backend={}, @default_proc=nil>, @connections=[], @automatic_reconnect=true, @available=#<ActiveRecord::ConnectionAdapters::ConnectionPool::Queue:0x00000101e8c658 @lock=#<ActiveRecord::ConnectionAdapters::ConnectionPool:0x00000101e8c798 ...>, @cond=#<MonitorMixin::ConditionVariable:0x00000101e8c630 @monitor=#<ActiveRecord::ConnectionAdapters::ConnectionPool:0x00000101e8c798 ...>, @cond=#<Thread::ConditionVariable:0x00000101e8c608>>, @num_waiting=0, @queue=[]>> 
+0

귀하의 database.yml 파일은 어떻게 생겼습니까? – blotto

+0

@blotto database.yml로 내 질문을 업데이트했습니다. – Indrajeet

+0

'irb'보다는'rails c '를 사용하여 루비를 다시 시도하십시오. Rails 환경에로드 된 Ruby는 훨씬 더 복잡한 짐승과 Ruby 만 있습니다. NB와 비슷한 문제가 발생하여 원시 라이브러리 간의 이름 충돌이 발생했습니다. 그것이 문제라면 backtrace에서 공표 할 수 있어야합니다. – Gene

답변

1

내가 단순화 것있어 귀하의 database.yml 구성, 기본 필수품 스트립.

development: 
adapter: sqlserver 
host: "host.database.windows.net" 
port: 1433 
database: <database> 
username: <username> 
password: <password> 
timeout: 5000 

하지만 먼저 IRB에서 db : migrate 작업을 통해 발생하는 연결 인스턴스를 에뮬레이트 해보십시오.

ActiveRecord::Base.establish_connection(
    :adapter => "sqlserver", 
    :host  => "host.database.windows.net", 
    :username => <username>, 
    :password => <password>, 
    :database => <database> 
) 

성공한 경우 database.yml의 값만 사용하십시오. 더 많은 구성 값을 추가해야하는 경우 한 번에 하나씩 추가하십시오. 이 코어 구성이 작업을 수행해야하지만.

+0

IRB에서 연결 인스턴스를 에뮬레이션하고 내 질문을 응답으로 업데이트했습니다. 연결 인스턴스가 성공적이면 응답에서 추론 할 수있는 방법이 있습니까? – Indrajeet

+0

게시 한 인스턴스가 성공적으로 보입니다. 당신은 database.yml 설정을 그 값으로 줄 였는가? 다른 모든 것들을 주석 처리하십시오. try db : migrate again – blotto

+0

db : migrate, -----> 시도하면이 오류가 발생합니다. 레이크 중단되었습니다! TinyTds :: 오류 : 데이터베이스간에 전환하려면 USE 문이 지원되지 않습니다. 새 연결을 사용하여 다른 데이터베이스에 연결하십시오. – Indrajeet