一種在Windows 7上安裝Postgres以用作Rail 3(3.0.7)項目的PostgreSQL數據庫的方法。
序言(你可以跳過此位)
所以要指出的第一件事是,Postgres的不只是從.sqlite3文件擴展名不同,它是一個整體的管理機制你的數據庫。因此,它有一個客戶端/服務器模型,其中您需要設置爲使用Postgres作爲您的Rails應用程序的數據庫。
Postgres設置與幾乎毫不費力的sqlite設置相比經歷了相當大的痛苦:如果你部署到Heroku,他們目前使用Postgres,所以你使用Postgres時sqlite3上的一些SQL調用會中斷。在本地調試postgres比在Heroku的服務器上調試要容易得多。
所以我做了以下事情: (免責聲明:我可能忘記包括我所做的一些事情......我花了48個多小時的痛苦纔開始工作...... if下面的建議對你不起作用,然後巨大的(2300頁!!),但very thorough Postgres documentation應該有幫助。如果你認真使用Postgres,我建議下載這個,因爲它有很多材料,我只有(第二個免責聲明:我幾乎可以肯定地打破了20個明智的Postgres準則並暴露了Postgres數據庫中的安全漏洞,如果有經驗的Postgres用戶不同意任何明顯的事情,請編輯我的)
。步驟1.下載,然後從here因爲here說,只有9.0.x將在Windows 7支持我保持所有默認選項,只用於「祕密」作爲密碼安裝PostgreSQL v9.0.4-1當Postgres的安裝人員提示你時(我不確定在互聯網上共享這些信息的後果是什麼......很快就會發現我確信)。你會在步驟需要使用此密碼3.
。步驟2.更改環境變量,使得路徑(for system, not user(我不知道這是顯著與否))爲:C:\Program Files\PostgreSQL\9.0\bin
(注:我因此它不會被安裝在'C:\ Program Files(x86)\ PostgreS ...'中的32位中)'
不要忘記將訪問權限更改爲文件夾PostgreSQL \ 9.0並刪除文件夾或內容的所有默認只讀權限。 (您可能還需要重新啓動計算機才能生效 - 感謝@Gavin - 儘管不太可能)。
。步驟3.測試Postgres的安裝,試圖創建一個新的數據庫: 從命令行:createdb -U postgres mydb_as_postgres
。 現在應該提示你輸入密碼,如果你不是,可能需要先啓動服務器(我不記得是否需要這樣做)。最簡單的方法是通過pgAdmin III,它應該是位於C:\Program Files\PostgreSQL\9.0\bin
之類的文件夾中的「pgAdmin3.exe」。一旦你開始pgAdmin III,左側應該有一個名爲「對象瀏覽器」的面板。在此應該有一棵樹:
服務器組>服務器> PostgreSQL 9。0(localhost:5432)
右鍵單擊'PostgreSQL 9.0(localhost:5432)'並選擇'連接'。
createdb -U postgres mydb_as_postgres
命令應創建一個名爲'mydb_as_postgres'的新數據庫,您可以通過啓動pgAdmin III並雙擊'PostgreSQL 9.0(localhost:5432)'來檢查該數據庫。在這裏面應該是:
Databases (2)
這應該列出2個數據庫稱爲mydb_as_postgres
和postgres
我把它叫做_as_postgres
,因爲該命令的-U postgres
部分告訴Postgres的創建與Postgres的用戶數據庫作爲它的主人,這您需要指定何時未以postgres用戶身份登錄。我將所有的文件都存儲爲'AJames'用戶,但如果您是相同的,並且希望繼續開發您的應用程序,並以不同的用戶身份登錄時,您需要爲該用戶創建一個Postgres'角色'(請參閱步驟4)。
。步驟4通過pgAdmin III。右鍵單擊登錄角色(這對我來說是):
對象瀏覽器>服務器組>服務器>的PostgreSQL 9.0(本地主機:5432)>登錄角色
右鍵單擊登錄角色並選擇「新建登錄角色...' 在角色名稱中,放入您的操作系統用戶名,對我來說是AJames, 並在'角色權限'選項卡下填寫您的密碼,我檢查了所有框,但是有經驗的postgres用戶可能會強烈建議只檢查'從父角色繼承權限'和'可以創建數據庫對象'但我不是一個有經驗的用戶,只是想在Postgres中調試Rails SQL調用,所以我也檢查了'超級用戶'和「可以創建角色」,以防萬一。
。步驟5.您現在應該可以創建新的數據庫,而無需以postgres用戶身份登錄。試着輸入:
createdb mydb_as_user
這應該可以爲你工作。
。步驟6.好的,所以你的rails'db /'目錄下有一個development.sqlite3文件。最初我將設置下一個測試,將其從sqlite3轉換爲psql。
雖然我無法得到這個工作,但我留下了我的嘗試,因爲我使用的解決方案需要在Heroku.com上的Rails應用程序中使用數據(請參閱第7步之後的解決方案)。對於那些只有本地應用且Heroku中沒有數據的用戶,他們不能使用相同的方法,因此他們可能需要探索如下內容:
x6.1首先,通過嘗試命令測試'psql'從喜歡你的命令行:
psql mydb_as_user
這應該顯示類似下面(您以後在您輸入密碼):
C:>psql mydb_as_user
Password:
psql (9.0.4)
WARNING: Console code page (850) differs from Windows code page (1252)
8-bit characters might not work correctly. See psql reference
page "Notes for Windows users" for details.
Type "help" for help.
mydb5=#
5233。2嘗試輸入:
CREATE TABLE users_table (id integer, "name" text);
它應該顯示:
CREATE TABLE
mydb5=#
如果你的pgAdmin III檢查,你應該看到桌子上有下:
對象瀏覽器>服務器組>服務器> PostgreSQL 9.0(localhost:5432)>數據庫> mydb_as_user> Schema> public> Tables> users_table>
x6.3好吧,緊跟t ry轉換。 Downloaded sqlite-shell Windows預編譯二進制文件。
x6.4創建一個新目錄,我使用'C:\ temp'並將sqlite3.exe和您的development.sqlite3文件放入其中。
x6.5使用以下命令(這些命令來自here)將development.sqlite3數據庫轉儲到Postgres中。
sqlite3 development .dump | psql development2
你可能會得到這樣的錯誤:讓我去到的pgAdmin III,並提出了發展2數據庫,再次試圖命令並得到
psql: FATAL: database "development2" does not exist
x6.6:
ERROR: syntax error at or near "PRAGMA"
LINE 1: PRAGMA foreign_keys=OFF;
^
BEGIN
COMMIT
就像我說的,我無法得到它的工作。我確信有一種方法可以避免這種錯誤,但我想到了一種不同的方式,所以我使用了這種解決方案(它需要一個Heroku帳戶來獲取您的數據,並使用Taps gem(I)執行從sqlite3到psql的轉換。相信):
步驟7.在pgAdmin III中我創建了另一個數據庫,在屬性選項卡下我設置了name:'development',owner:'AJames'(用你自己的Windows用戶名替換它)。權限選項卡下,設置角色:「公共」和檢查(認爲這重置爲未選中狀態,所以我不知道這是必要的)ALL選項
。步驟8添加 。 10 到你的寶石文件。在這一點上,你可能也想刪除: gem 'sqlite3'
。
。步驟9.集的database.yml爲suggested here到:
development:
adapter: postgresql
database: db/development
username: AJames # replace this with your own user name
password: secret # replace this with your own password
host: localhost
encoding: UTF8
pool: 5
timeout: 5000
如果您正在使用一個開源的項目,並不希望被公之於衆您的密碼,看看在某些Securely providing the database password in a Rails app的答案。
。步驟10.在命令行中你的Rails應用程序的根目錄下運行: rake db:migrate
這將創建一個新的架構和Postgres數據庫中的所有表。
。步驟11。從您的命令行運行heroku db:pull
(再次從您的rails應用程序的根目錄中)將您的所有數據拉下並放入新的空Postgres數據庫。我認爲在這一點上你的水龍頭寶石將爲你做這項工作。
。步驟12.希望沒有步驟12! ...現在它應該爲你工作。快樂的RoR PostgreSQL調試!請編輯或讓我知道,如果有任何錯誤。
而且,這裏有更多的東西的清單,可能是有趣/有用:
我只是從HTTPS安裝PostgreSQL的://postgrespro.com/windows,所有其他設置 - 常用的方法。 – prograils