2010-07-17 89 views
0

這樣我就可以連接(顯然我更換了所有的真實的值)催化劑創建模式不能連接,但我可以

mysql -u username -p -h db.dbhostname.com dbname 

但是當我運行Catalyt的創建腳本,我得到

$ ./script/dasgift_create.pl model DB \ 
    DBIC::Schema MyApp::Schema create=static \ 
    components=TimeStamp \ 
    dbi:mysql:dbname:db.dbhostname.com username [email protected] 
DBIx::Class::Schema::Loader::make_schema_at(): 
DBI Connection failed: 
DBI connect('dbname:db.dbhostname.com','username',...) failed: 
Access denied for user 'username'@'whereiam.com' (using password: YES) 
at /opt/local/lib/perl5/site_perl/5.8.9/DBIx/Class/Storage/DBI.pm line 1104 

它的行爲像db服務器不允許來自whereiam.com的連接,但我可以通過命令行連接好,並試圖打開數據庫到任何地方的連接臨時,仍然沒有成功。對不起,我可以提供的信息很少,但這就是我現在所擁有的一切。

回答

1

對不起,浪費你的時間。我覺得自己像個白癡。我的密碼有一個美元符號,我沒有費心把它放在引號中,所以它基本上是截斷密碼,試圖擴展一個環境變量。引用它恰當地解決了這個問題。再次感謝您的響應hobbs,順便說一句,原來的連接字符串也適用。

+0

有趣的是,我幾乎把我的例子中的用戶名和密碼放在單引號中「爲了安全」,但我說「好吧,at-signs不需要在shell中引用......」,但沒有。噢,很高興聽到這是一個簡單的監督,而不是一個邪惡的錯誤。 – hobbs 2010-07-17 08:38:08

+0

請記住接受你的答案。 – xenoterracide 2010-07-18 01:28:53

+0

顯然,在我能接受我自己的答案之前,有一段等待時間......只剩下23個小時。 – Felix 2010-07-18 03:59:50

1

我不認爲MySQL的DSN工作方式。嘗試運行腳本:

./script/dasgift_create.pl model DB DBIC::Schema MyApp::Schema \ 
create=static components=TimeStamp \ 
'dbi:mysql:database=dbname;host=db.dbhostname.com' \ 
username [email protected] 

(變化的部分,這正好是DSN,但我用反斜槓換行符格式化一下,好讓您可以粘貼,如果你想)。

+0

還是不行。我在我的連接字符串中,以及您提供的新連接字符串都是從一個只使用DBI的小型10行測試腳本開始,準備並執行一個簡單的選擇。此外,我通過將命令行上的內容複製到該測試腳本中排除了錯別字。感謝您的快速跟進。 – Felix 2010-07-17 04:00:53