使用SQL查询访问另一个数据库

时间:2015-01-21 01:28:04

标签: mysql ruby-on-rails

我正在尝试访问rails应用程序中的另一个数据库,以及使用SQL语句查询该数据库并返回JSON。

主数据库和辅助服务器位于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]}.

2 个答案:

答案 0 :(得分:1)

发送请求时,将其作为本地主机发送:3000 / getActivatedFriends.json。这样控制器将响应json请求。默认情况下,它响应html请求。

答案 1 :(得分:1)

您可以通过在表之前指定数据库名称来访问另一个数据库,例如:

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

这是你想要做的吗?如果它们位于同一台服务器上,则此语法可以正常工作。