2017-06-21 61 views
1

我用我的舊腳本,它用來工作得很好,但現在我收到以下錯誤:連接到使用Ruby但沒有Rails的mysql的

Error while connecting to the database. 
Can't connect to MySQL server on 'some.remote.host.com' (65) 

我無法弄清楚什麼叫真正的錯誤是,我的連接數據肯定是正確的,因爲我可以用給定的用戶名和密碼登錄到PhPMyadmin。

這裏是我的代碼:

# encoding: UTF-8 

require 'mysql2' 
require 'csv' 

def initialize_data 
    puts "Initializing database, username, password and host..." 
    @database = "database_name" 
    @username = "database_user" 
    @password = "my_secret_password" 
    @host = "remote.host.com" 
end 

def connect 
    puts "Trying to connect to the database." 
    begin 
    @client = Mysql2::Client.new(host: @host, username: @username, password: @password, database: @database) 
    rescue => e 
    puts "Error while connecting to the database." 
    puts e.message 
    end 
end 

我沒能找到這65錯誤任何信息。救人e.message根本沒有幫助。

有人能指出我至少在什麼方向挖掘?我現在連續第二天在這個簡單的腳本中掙扎。有什麼辦法可以收到更詳細的錯誤信息嗎?就像Rails的error.full_messages.each

+0

根據[To This](https://major.io/2007/08/09/mysql-error-codes/)錯誤65意味着軟件包未安裝,並且是操作系統錯誤。 – engineersmnky

回答

1

你可以查找與perror MySQL錯誤代碼:

$ perror 65 
OS error code 65: No route to host 

這可能意味着MySQL服務器是你不能達到當前在網絡上。如果是這樣,你還沒有達到用戶名和密碼重要的地步。測試問題是否與代碼或訪問數據庫的簡單方法是使用command-line tool。如果您從命令行無法訪問數據庫,那麼您的代碼不是您的代碼。

另一個測試是在本地運行MySQL。 (或者在可能的情況下,在與MySQL數據庫相同的機器上運行腳本。)如果腳本按預期工作,請檢查網絡或數據庫配置中是否存在最近的更改。

+0

謝謝!這讓我變得非常簡單 - 我沒有意識到我們的靜態IP地址發生了變化。除了本地主機之外,我允許舊的,但不是新的。 – mohnstrudel