2015-01-21 91 views
0

我試圖在我的rails應用程序中訪問另一個數據庫,以及使用SQL語句查詢數據庫並返回JSON。使用SQL查詢訪問另一個數據庫

主數據庫和輔助數據庫位於運行在MySQL中的同一臺服務器上。當測試,看看這是否會簡單地作爲工作:

的datagbase.yml文件:

development: 
    adapter: mysql2 
    encoding: utf8 
    database: onlineportal 
    username: root 
    password: 
    host: 127.0.0.1 
    port: 3306 
    socket: 

android_mobile_developement: 
    adapter: mysql2 
    encoding: utf8 
    database: androidchatterdatabase 
    username: root 
    password: 
    host: 127.0.0.1 
    port: 3306 
    socket: 

但隨後在控制器中建立了方法:

class RequestsController < ApplicationController 
    def getActivatedFriends 
     @results = User.find_by_sql("SELECT 
             a.id 
            , a.username 
            , a.phoneNumber 
            FROM androidchatterdatabase.users a 
            WHERE phoneNumber in (8754444444) and 
              removed = 0 and 
              is_user = 1;") 

     respond_to do |format| 
      format.html 
      format.json { render json: { friends_match: @results }} 
     end   
     end 

並呼叫路線:

localhost:3000/getActivatedFriends/ 

從路線:

match '/getActivatedFriends/', to: 'requests#getActivatedFriends', via: 'get' 

產生了錯誤:

Missing template requests/getActivatedFriends, application/getActivatedFriends with {:locale=>[:en], :formats=>[:html], :handlers=>[:erb, :builder, :raw, :ruby, :coffee, :jbuilder]}. 

回答

1

儘管發送請求,將其作爲本地主機:3000/getActivatedFriends.json.That方式控制器將響應json請求。默認情況下它響應html請求。

1

您可以通過表之前指定數據庫名稱來訪問其它數據庫,如:

SELECT * FROM onlineportal.table 
- or - 
SELECT * FROM androidchatterdatabase.table 

這是你希望做什麼?如果他們在同一臺服務器上,則此語法將起作用。