database.yml文件有adapter: postgresql
,這是如何引導rails服務器連接到postgres程序的?如果我在本地運行服務器,Rails會查看我的PATH
或其他信息以查找我的postgres安裝位置?Rails如何通過database.yml找到正確的數據庫適配器?
回答
數據庫是客戶端 - 服務器軟件。因此,您的Rails應用程序通過主機名/ IP地址,端口號和數據庫證書(用戶名/密碼)連接到數據庫服務器,該證書可存在於網絡上的任何位置。
如果您正在本地主機上開發rails應用程序,並將數據庫二進制文件安裝在您正在開發的同一臺機器上。然後,爲了連接到該數據庫服務器,必須在本地主機上運行監聽端口的數據庫守護程序(對於postgresql,缺省端口爲5432
)。您可以使用netstat -an | grep 5432
你可以改變你的應用程序的config/database.yml
,如果您使用的是不同的一個(如果你沒有指定端口號,並使用PostgreSQL適配器,它假定默認端口號的端口號測試你的Postgres守護進程的狀態5432
)
development:
adapter: postgresql
encoding: utf8
database: app_dev
username: dev_user
password: dev_pass
host: localhost
port: 5432
謝謝@ sa77!好像在rails服務器和數據庫之間有一個客戶端 - 服務器關係,rails是客戶端ping數據庫服務器的東西。爲了使它們連接,它們通過端口5432.當用戶啓動postgres時,它默認使一個程序(守護進程)負責監聽端口5432,以供其他想要與之交互的程序使用。在這個意義上,守護進程就像一個API。在rails''database.yml'中,它將連接到端口5432上的任何數據庫,這就是它通過用戶計算機上的該端口並打開守護進程以訪問postgres的方式? – mangocaptain1
是的..守護進程是你的postgres服務器運行在監聽端口'5432'的背景上,以獲取數據庫表上的任何API請求。你的'database.yml'文件中的數據庫名稱,端口號,數據庫用戶名和密碼配置定義了你的rails應用程序的ORM庫(ActiveRecord :: Base),該庫爲你的應用程序中的數據訪問哪個數據庫。你可以檢查細節關於你的Rails應用程序和postgres之間的db連接與你的'rails console'中的'ActiveRecrod :: Base.connection'。 – sa77
答案是在database.yml
意見非常正確的:
# The TCP port the server listens on. Defaults to 5432.
# If your server runs on a different port number, change accordingly.
# port: 5432
所以,如果你已經做了香草安裝,那麼軌道只是使用端口5432連接到你和你的數據庫進行通信。
因此,rails使用端口5432來偵聽,默認情況下,postgres會自動設置爲連接偵聽端口5432的任何內容,這就是它們如何連接的方式? – mangocaptain1
- 1. 更改Rails數據庫適配器
- 2. Rails加密SQL Server數據庫database.yml中的數據庫密碼
- 3. 如何配置的database.yml從BlueHost的現有的數據庫?
- 4. 在php.net上找到的數據庫適配器
- 5. Rails正在尋找/config/config/database.yml
- 6. 如何正確通知此適配器其數據集已更改?
- 7. SQLite數據庫適配器
- 8. Rails連接到database.yml指定的數據庫
- 9. 數據適配器過濾
- 10. Rails:錯誤:數據庫配置沒有指定適配器
- 11. 如何在Rails 4中正確設置database.yml文件
- 12. 如何通過mysqldump正確轉儲mysql數據庫?
- 13. 如何正確連接到數據庫?
- 14. 如何通過WinApi確定默認網絡適配器?
- 15. Rails數據庫通過id查找數據
- 16. 如何通過網絡適配器查找Linux名稱空間?
- 17. Rails中一個環境中的多個數據庫適配器
- 18. JRuby的公共數據庫適配器
- 19. ruby的數據庫抽象/適配器
- 20. Geddy的數據庫適配器
- 21. 爲rails 3創建的不正確的數據庫記錄has_many:通過關聯
- 22. 找到正確的意圖過濾器
- 23. android listview適配器不顯示正確的數據
- 24. 如何正確地發送數據從PHP到Android通過JSON?
- 25. 如何通過php正確地發送數據到json?
- 26. Filter ListView通過適配器
- 27. Rails:自動檢測數據庫適配器
- 28. 通過HTTP適配器傳遞參數?
- 29. 具有OSB中的存儲過程的數據庫適配器
- 30. 不同的數據庫適配器如何更改數據庫CRUD?
嗯,它不必知道它的安裝位置。它連接到一個名爲postgres的運行服務,該服務在本地主機端口5432上運行,除非您更改該服務。 – Iceman