簡體   English   中英

連接失敗,數據庫有'。' 在名字中

[英]Connection fails, database has '.' in name

我一直在嘗試在我們的一個rails應用程序中調試SQL Server數據庫錯誤。 問題是database.yaml中添加的數據庫名稱有一個'.' 在它( 'testdb.v1' )。 它導致錯誤:

TinyTds::Error: Database 'testdb' does not exist. Make sure that the name is entered correctly.

認為這是一個YAML與Rails問題引用'。' 我在rails控制台中打開了應用程序並嘗試了我能想到的各種Ruby引用,但每次都得到相同的錯誤。

在我的model.connection_config分配數據庫名稱的某個地方,'。' 被解釋為格式說明符,並從名稱中刪除后綴。 model.connection_config['database']'testdb.v1' ,但顯然不是那些被傳遞給SQL Server的東西。

我不確定這是一個rails問題還是一個SQL Server問題,雖然我一起扔的C#應用​​程序設法打開數據庫沒有問題。 因此,我認為這是一個rails / ActiveRecord問題。 不幸的是,我沒有更改數據庫名稱的選項。

有沒有辦法引用'。' 字符,以便它將保持'。' 和數據庫名稱中的后綴?

進一步的調查把我帶到了activerecord-sqlserver-adapter的github頁面

在那里,我發現了問題230226 ,與我的問題類似。 顯然使用'。' 在數據庫,表或列名稱中會出現類似的問題。 由於這些是在2012年創建的並且仍處於打開狀態,因此看起來不會很快出現修復。 在評論中有一些想法可以將其修補到工作狀態。 猜猜這是我必須采取的方法來實現這一目標。

更新:對於遇到類似問題的人來說,數據庫名稱是唯一的問題(不是表或列),我們采用的解決方案是圍繞sqlserver-adapter的最終運行。 我們為每個數據庫創建了一個SQL用戶,並為該用戶分配了一個默認數據庫。 然后,我們使用用戶登錄進行連接,但將數據庫名稱保留為null。 在這種情況下,SQL Server將連接到默認數據庫。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM