我正在尝试访问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]}.
答案 0 :(得分:1)
发送请求时,将其作为本地主机发送:3000 / getActivatedFriends.json。这样控制器将响应json请求。默认情况下,它响应html请求。
答案 1 :(得分:1)
您可以通过在表之前指定数据库名称来访问另一个数据库,例如:
SELECT * FROM onlineportal.table
- or -
SELECT * FROM androidchatterdatabase.table
这是你想要做的吗?如果它们位于同一台服务器上,则此语法可以正常工作。