2011-11-05 50 views
1

我有一個Ruby on Rails項目,我想讓用戶執行SQL SELECT查詢。使用不同的數據庫執行單個查詢。 Ruby on Rails

爲了安全起見,我有兩個mysql數據庫。其中之一就是我的主數據庫和用戶信息等等。 第二個數據庫是爲了保持其中的用戶都應該能夠使用我授予「選擇」權限的特定數據庫用戶選擇的東西「測試」表。

基本上,我希望我的用戶提交的查詢,然後我想改變我的測試數據庫,運行查詢,返回結果,然後回到我的舊的數據庫。

的database.yml

mysql: &mysql 
    adapter: mysql 
    database: sql_detective 
    user: root 
    password: root 
    timeout: 5000 

mysql_tests: &mysql_tests 
    adapter: mysql 
    database: sql_detective_tests 
    user: user 
    password: user 
    timeout: 5000 

test: 
    <<: *mysql_tests 
development: 
    <<: *mysql 

Funcionario.rb

class Funcionario < ActiveRecord::Base 
    establish_connection :test 
end 

stages_controller.rb

@query = Funcionario.find_by_sql(params[:query]) 

當我嘗試執行查詢,我得到這個錯誤:

Mysql::Error in StagesController#sql_query 

Access denied for user 'root'@'localhost' (using password: YES) 

回答

2

解決。

修復

的database.yml

更改用戶名來固定這一切。

是這樣的...

以前

development: 
    adapter: mysql 
    database: sql_detective 
    user: root 
    password: root 
    timeout: 5000 

development: 
    adapter: mysql 
    database: sql_detective 
    username: root 
    password: root 
    timeout: 5000