sql >> Databáze >  >> RDS >> PostgreSQL

Instalace Postgresu na Windows pro použití s ​​Ruby-on-Rails

Přístup k instalaci Postgresu na Windows 7 pro použití jako databáze PostgreSQL pro projekt rails 3 (3.0.7).

Preambule (tento kousek můžete přeskočit)

První věc, kterou je třeba zdůraznit, je, že Postgres není jen jiná přípona souboru než .sqlite3, je to celý mechanismus pro správu vašich databází. Jako takový má model klient/server, u kterého budete muset oba nastavit, abyste mohli používat Postgres jako databázi pro vaši aplikaci rails.

Motivace pro procházení značných bolestí nastavení Postgres oproti téměř snadnému nastavení sqlite:pokud nasazujete na Heroku, aktuálně používají Postgres, takže některá vaše volání SQL, která jsou v pořádku na sqlite3, se při použití s ​​Postgresem přeruší. Je mnohem snazší ladit postgres lokálně, než když je to na serverech Heroku.

Udělal jsem tedy následující věci:(Odmítnutí odpovědnosti:Možná jsem zapomněl zahrnout některé z věcí, které jsem udělal... trvalo mi přes 48 hodin bolesti, než jsem to zapnul a vypnul, než jsem to uvedl do práce... pokud následující rady nefungují Pak by pro vás měla pomoci obrovská (2300 stran!!), ale velmi důkladná dokumentace Postgres. Doporučuji si ji každopádně stáhnout, pokud to s používáním Postgres myslíte vážně, protože obsahuje spoustu materiálů, se kterými jsem teprve začal abyste pochopili význam.) (Druhé vyloučení odpovědnosti:Téměř jistě jsem porušil 20 rozumných pokynů Postgres a odhalil bezpečnostní díry v databázi Postgres. Pokud existují nějaké zjevné věci, se kterými zkušený uživatel Postgres nesouhlasí, prosím upravte můj příspěvek.)

Krok 1. Zde si stáhněte a nainstalujte PostgreSQL v9.0.4-1, protože zde bylo řečeno, že na Windows 7 bude podporována pouze verze 9.0.x. Ponechal jsem všechny výchozí možnosti a pouze jsem použil „tajné“ jako heslo, když mě instalační program Postgres vyzval k zadání jednoho (opět nejsem si úplně jistý, jaké důsledky má sdílení těchto informací na internetu... jsem si jistý, brzy zjistím). Toto heslo budete potřebovat v kroku 3.

.Krok 2. Změňte proměnné prostředí tak, že cesta (pro systém , nikoli uživatel (nejsem si jistý, zda je to významné nebo ne)) je:C:\Program Files\PostgreSQL\9.0\bin
(N.b. Jsem na 64bitových oknech, proto se neinstalují pro 32bitové do 'C:\Program Files (x86)\PostgreS...')

Nezapomeňte změnit přístupová práva ke složce PostgreSQL\9.0 a odebrat všechna výchozí práva pouze pro čtení u složky nebo obsahu. (Aby se tato práva projevila, možná budete muset restartovat počítač - díky @Gavin - i když to není pravděpodobné).

.Krok 3. Otestujte instalaci Postgres pokusem o vytvoření nové databáze:Z příkazového řádku:createdb -U postgres mydb_as_postgres .Nyní byste měli být vyzváni k zadání hesla, pokud ne, možná budete muset nejprve spustit server (nepamatuji si, zda jsem to potřeboval nebo ne). Nejjednodušší způsob je přes pgAdmin III, což by mělo být 'pgAdmin3.exe' ve složce někde jako C:\Program Files\PostgreSQL\9.0\bin . Jakmile spustíte pgAdmin III, měl by být vlevo panel s názvem 'Prohlížeč objektů'. V tomto by měl být strom s:

Skupiny serverů> Servery> PostgreSQL 9.0 (localhost:5432)

Klikněte pravým tlačítkem na 'PostgreSQL 9.0 (localhost:5432)' a vyberte 'Připojit'.

createdb -U postgres mydb_as_postgres příkaz by měl vytvořit novou databázi s názvem 'mydb_as_postgres', kterou můžete zkontrolovat spuštěním pgAdmin III a dvojitým kliknutím na 'PostgreSQL 9.0 (localhost:5432)'. Pod tím by mělo být:

Databases (2) který by měl obsahovat 2 databáze s názvem mydb_as_postgres a postgres

Nazval jsem to _as_postgres protože -U postgres část příkazu říká Postgresu, aby vytvořil databázi s uživatelem postgres jako jejím vlastníkem, což musíte zadat, když nejste přihlášeni jako uživatel postgres. Mám však všechny své soubory uložené jako uživatel „AJames“, takže pokud jste stejní a chcete pokračovat ve vývoji aplikace, když jste přihlášeni jako jiný uživatel, musíte pro tohoto uživatele nyní vytvořit „roli“ Postgres (viz krok 4).

.Krok 4. Prostřednictvím pgAdmin III. Klikněte pravým tlačítkem na Přihlašovací role (což je pro mě v):

Prohlížeč objektů> Skupiny serverů> Servery> PostgreSQL 9.0 (localhost:5432)> Přihlašovací role

Klikněte pravým tlačítkem na Přihlašovací role a vyberte 'Nová přihlašovací role...' v názvu role, zadejte uživatelské jméno svého operačního systému, což je pro mě AJames, a vyplňte své heslo na kartě 'Oprávnění rolí', zaškrtl jsem vše boxy, ale zkušený uživatel postgres by pravděpodobně důrazně doporučil zkontrolovat pouze „dědí práva z rodičovských rolí“ a „může vytvářet databázové objekty“ Ale nejsem zkušený uživatel a chci pouze ladit volání Rails SQL v Postgres, takže Pro jistotu jsem také zaškrtl položky 'Superuser' a 'Can create role'.

.Krok 5. Nyní byste měli být schopni vytvořit novou databázi, aniž byste byli přihlášeni jako uživatel postgres. Zkuste napsat:

createdb mydb_as_user

Snad by vám to mělo fungovat.

Krok 6. Dobře, takže v adresáři rails 'db/' máte soubor development.sqlite3. Původně jsem se chystal nastavit další test jako převod tohoto z sqlite3 na psql.
Nemohl jsem to zprovoznit, ale nechal jsem své pokusy zde, protože řešení, které jsem použil, vyžadovalo mít zapnutá data v aplikaci Rails Heroku.com (viz místo toho řešení od kroku 7 dále). Pro ty, kteří mají pouze místní aplikaci a žádná data v Heroku, nemohou použít stejný přístup, takže možná budou muset prozkoumat něco takového:

x6.1 Nejprve otestujte 'psql' vyzkoušením příkazu z příkazového řádku jako:

psql mydb_as_user

mělo by se zobrazit něco jako níže (po zadání hesla):

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=# 

x6.2 zkuste zadat:

CREATE TABLE users_table (id integer, "name" text);

Mělo by se zobrazit:

CREATE TABLE
mydb5=#

Pokud zkontrolujete pgAdmin III, měli byste vidět tabulku pod:

Prohlížeč objektů> Skupiny serverů> Servery> PostgreSQL 9.0 (localhost:5432)> Databáze> mydb_as_user> Schémata> public> Tabulky> users_table>

x6.3 Dobře, dále zkuste konverzi. Stažené předkompilované binární soubory sqlite-shell pro Windows.
x6.4 Vytvořte nový adresář, použil jsem 'C:\temp' a vložil do něj sqlite3.exe a vaše soubory development.sqlite3.
x6. 5 Pomocí následujících příkazů (které jsou odtud) vypište databázi development.sqlite3 do Postgresu.

sqlite3 development .dump | psql development2

můžete dostat chybu jako:

psql: FATAL: database "development2" does not exist

x6.6, takže jsem šel do pgAdmin III a vytvořil jsem databázi pro vývoj 2, zkusil jsem příkaz znovu a dostal:

ERROR:  syntax error at or near "PRAGMA"
LINE 1: PRAGMA foreign_keys=OFF;
        ^
BEGIN
COMMIT

Jak jsem řekl, nemohl jsem to uvést do provozu. Jsem si jistý, že existuje způsob, jak tuto chybu obejít, ale myslel jsem na jiný způsob, a tak jsem místo toho použil toto řešení (které vyžaduje účet Heroku, aby měl vaše data, a provádí převod z sqlite3 na psql pomocí drahokamu Taps (I věřit):

Krok 7. v pgAdmin III jsem vytvořil další databázi. Na kartě Vlastnosti nastavím název:'vývoj', vlastníka:'AJames' (nahraďte to svým vlastním uživatelským jménem Windows). A na kartě oprávnění nastavte roli:'public' a zaškrtněte možnost VŠECHNY (myslím, že se to resetuje na nezaškrtnuté, takže si nejsem jistý, zda je to nutné).

Krok 8. addgem 'pg', '0.11.0' do vašeho souboru drahokamů. Pravděpodobně budete také chtít odstranit:gem 'sqlite3' v tomto bodě také.

Krok 9. nastavte database.yml, jak je zde navrženo, na:

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

Pokud pracujete na projektu s otevřeným zdrojovým kódem a nechcete, aby vaše heslo bylo veřejně dostupné, podívejte se na některé z odpovědí na Bezpečné poskytnutí hesla databáze v aplikaci Rails.

Krok 10. z příkazového řádku v kořenovém adresáři aplikace rails spusťte:rake db:migrate Tím se vytvoří nové schéma a všechny tabulky v databázi Postgres.

.Krok 11. spusťte heroku db:pull z příkazového řádku (opět z kořenového adresáře vaší aplikace rails), abyste stáhli všechna svá data dolů a do své nové prázdné databáze Postgres. Myslím, že v tuto chvíli za vás tuto práci udělá váš drahokam kohoutků.

.Krok 12. Doufejme, že neexistuje žádný krok 12! ...a nyní by vám to mělo fungovat. Šťastné ladění RoR PostgreSQL! Prosím upravte, nebo mi dejte vědět, pokud jsou v tomto nějaké chyby.

Zde je také seznam dalších věcí, které by mohly být zajímavé/užitečné:

  • Toto je příspěvek na blogu o heslech Postgres, k čemu jsou, proč je potřebujete, jak je změnit atd.
  • Toto pod 'Vytvoření prostorové databáze' je užitečné pro nováčky, aby pochopili, o čem je pg_hba.conf, a druhý odkaz, který Reno uvedl výše, pod 'Using pgAdmin III GUI' je užitečný k otestování, zda postgres skutečně funguje , než se pokusíte přizpůsobit Rails (tj. zkuste vytvořit databázi a vložit do ní tabulku a nějaká data).
  • V rozsáhlé, ale velmi komplexní dokumentaci Postgres bych začal na straně 58, „I. tutorial'. Pak na pdf stránce 431(!) je 'Kapitola 17. Nastavení a provoz serveru', kterou jsem také považoval za užitečnou.


  1. SQL rozdělený řádek oddělený čárkou

  2. Přejmenujte sloupec v MySQL

  3. Databázová služba MySQL – nové inovace HeatWave

  4. Jak určit automaticky vygenerovaný primární klíč použitý jako cizí klíč pro jinou tabulku