Podejście do instalacji PostgreSQL w systemie Windows 7 do wykorzystania jako baza danych PostgreSQL dla projektu rails 3 (3.0.7).
Preambuła (można pominąć ten bit)
Więc pierwszą rzeczą, którą należy podkreślić, jest to, że PostgreSQL jest nie tylko inny rozszerzenie pliku z .sqlite3, to cały mechanizm do zarządzania bazami danych . Jako taki ma model klient/serwer, z którego będziesz musiał skonfigurować zarówno używanie PostgreSQL jako bazy danych dla twojej aplikacji railsowej.
Motywacja do przechodzenia znacznego bólu z Postgreatora w porównaniu do prawie bez wysiłku instalacji sqlite: jeśli wdrażasz system Heroku, obecnie używają PostgreSQL, więc niektóre z twoich wywołań SQL, które są w porządku na sqlite3, zostaną zerwane, gdy użyjesz ich z Postgresem . Dużo łatwiej jest debugować PostgreSQL lokalnie niż wtedy, gdy jest on na serwerach Heroku.
Zrobiłem następujące rzeczy: (Zastrzeżenie: być może zapomniałem włączyć niektóre rzeczy, które zrobiłem ... zajęło mi ponad 48 godzin bólu, aby go uruchomić ... Poniższa porada nie działa dla ciebie, wtedy ogromna (2300 stron !!), ale very thorough Postgres documentation powinna pomóc.Ile zalecam pobieranie tego tak czy inaczej, jeśli poważnie myślisz o używaniu Postgres, ponieważ ma dużo materiału, który mam tylko zacząłem rozumieć znaczenie.) (Drugie zastrzeżenie: prawie na pewno złamałem 20 sensownych wytycznych PostgreSQL i ujawniłem luki w zabezpieczeniach w bazie danych PostgreSy.) Jeśli wystąpią oczywiste rzeczy, których doświadczony użytkownik Postgres nie zgadza się, edytuj moje po.)
.step 1. Pobierz i zainstaluj PostgreSQL v9.0.4-1 z here ponieważ here powiedział tylko 9.0.x będą obsługiwane w systemie Windows 7. Ciągle wszystkie opcje domyślne i tylko używane „tajemnicę” jako hasło gdy zostaniesz poproszony przez instalator PostgreSQL o jeden (ponownie nie jestem do końca pewien, jakie będą konsekwencje udostępnienia tych informacji w Internecie ... wkrótce się dowiem). Musisz to hasło w kroku 3.
.step 2. zmienne Zmiana otoczenia tak, że ścieżka (for system, not user (nie jestem pewien, czy to ma znaczenie, czy nie)) wynosi: C:\Program Files\PostgreSQL\9.0\bin
(NB I "W 64-bitowych oknach, więc nie jest instalowany dla 32-bitowych w" C: \ Program Files (x86) \ PostgreS ... ")
Nie zapomnij zmienić prawa dostępu do folderu PostgreSQL \ 9.0 i usuń wszelkie domyślne uprawnienia do odczytu w folderze lub treści. (Może być również konieczne ponowne uruchomienie komputera, aby te ustawienia zaczęły działać - dzięki @Gavin - chyba nie jest prawdopodobne).
.step 3. instalacja testowe Postgres próbując utworzyć nową bazę danych: z linii poleceń: createdb -U postgres mydb_as_postgres
. Powinieneś zostać poproszony o wprowadzenie hasła teraz, jeśli nie, może to oznaczać, że musisz najpierw uruchomić serwer (nie pamiętam, czy musiałem to zrobić, czy nie). Najprostszym sposobem jest pgAdmin III, który powinien być "pgAdmin3.exe" w folderze gdzieś takim jak C:\Program Files\PostgreSQL\9.0\bin
. Po uruchomieniu pgAdmin III po lewej powinien być panel o nazwie "Przeglądarka obiektów". W tym powinno być drzewo z:
Grupy serwerów> Serwery> PostgreSQL 9.0 (localhost: 5432)
Kliknij prawym przyciskiem myszy na 'PostgreSQL 9.0 (localhost: 5432)' i wybierz 'Connect'.
Komenda createdb -U postgres mydb_as_postgres
powinna utworzyć nową bazę danych o nazwie "mydb_as_postgres", którą można sprawdzić, uruchamiając pgAdmin III i klikając dwukrotnie "PostgreSQL 9.0 (localhost: 5432)". Zgodnie z tym nie powinno być:
Databases (2)
które powinny notować 2 bazy danych o nazwie mydb_as_postgres
i postgres
nazwałem go _as_postgres
ponieważ -U postgres
część komendy mówi PostgreSQL, aby utworzyć bazę danych użytkownika postgres jak to właściciel, który musisz określić, kiedy nie jesteś zalogowany jako użytkownik postgresu. Wszystkie moje pliki są przechowywane jako użytkownik "AJames", więc jeśli jesteś taki sam i chcesz dalej rozwijać swoją aplikację po zalogowaniu się jako inny użytkownik, musisz utworzyć rolę "PostgreS" dla tego użytkownika (zobacz krok 4).
. Krok 4. Poprzez pgAdmin III. Kliknij prawym przyciskiem myszy na Login Roles (co dla mnie jest w):
Object Browser> Serwer Grupy> Serwery> PostgreSQL 9.0 (localhost: 5432)> Zaloguj Role
Kliknij prawym przyciskiem Login Roles i wybierz „Nowa Role logowania ... " w nazwie roli, wpisz swoją nazwę użytkownika systemu operacyjnego, która jest dla mnie AJames, i wpisz swoje hasło w zakładce" Uprawnienia do roli ", zaznaczyłem wszystkie pola, ale doświadczony użytkownik postgresu prawdopodobnie zalecałby tylko sprawdzenie "uprawnień dziedziczenia z ról nadrzędnych" i "może tworzyć obiekty bazy danych" Ale nie jestem doświadczonym użytkownikiem i po prostu chcę debugować wywołania Rails SQL w Postgresie, więc sprawdziłem także "Superuser" i "Może tworzyć role", na wszelki wypadek.
. Krok 5. Powinieneś teraz móc tworzyć nową bazę danych bez zalogowania się jako użytkownik postgreSQL. Spróbuj wpisać:
createdb mydb_as_user
Mam nadzieję, że to powinien pracować dla Ciebie.
.Krok 6. Okej, więc masz plik development.sqlite3 w katalogu "db /" w twoim szynie. Początkowo zamierzałem ustawić następny test jako konwersję z sqlite3 na psql.
Nie mogłem tego użyć, ale zostawiłem tutaj swoje próby, ponieważ rozwiązanie, którego używałem, wymagało danych w aplikacji Rails na Heroku.com (zamiast tego patrz rozwiązanie od kroku 7). Dla tych, którzy mają tylko lokalną aplikację i brak danych w Heroku, nie mogą używać tego samego podejścia, więc mogą potrzebować czegoś takiego:
x6.1 Najpierw przetestuj "psql", wykonując polecenie z linii poleceń jak:
psql mydb_as_user
powinno wyświetlić coś jak poniżej (po wpisaniu w hasła):
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 spróbuj wpisać:
CREATE TABLE users_table (id integer, "name" text);
Powinno wyświetlić:
CREATE TABLE
mydb5=#
Jeśli zaznaczysz w pgAdmin III, powinieneś zobaczyć tabelę tam pod:
Object Browser> Serwer Grupy> Serwery > PostgreSQL 9.0 (localhost: 5432)> Bazy danych> mydb_as_user> Schematy> public> Tables> users_table>
x6,3 OK, obok t nawrócenie. Downloaded sqlite-shell prekompilowany plik binarny dla systemu Windows.
x6.4 Utwórz nowy katalog, użyłem "C: \ temp" i umieściłem w nim pliki sqlite3.exe i development.sqlite3.
x6.5 Użyj następujących poleceń (które pochodzą z here), aby zrzucić bazę danych development.sqlite3 do PostgreSQL.
sqlite3 development .dump | psql development2
może pojawi się błąd jak:
psql: FATAL: database "development2" does not exist
x6.6 więc poszedłem do pgAdmin III i wykonane bazę rozwój 2, próbował ponownie komendę i otrzymała:
ERROR: syntax error at or near "PRAGMA"
LINE 1: PRAGMA foreign_keys=OFF;
^
BEGIN
COMMIT
Tak jak powiedziałem, nie mogłem go uruchomić. Jestem pewien, że istnieje sposób na obejście tego błędu, ale pomyślałem o innym sposobie, więc użyłem tego rozwiązania (które wymaga konta Heroku, aby mieć twoje dane i wykonuje konwersję z sqlite3 do psql używając gem Taps (I wierzę):
.step 7. w pgAdmin III stworzyłem innej bazy danych na karcie właściwości ustawić nazwę:. „rozwój”, owner:. „” (AJames zastąpić to z własnej nazwy użytkownika systemu Windows) oraz w zakładce przywilejów, ustawić rolę: „publiczne” i zaznaczona opcja wszystko (że to resetuje do zlekceważenia, więc nie jestem pewien, że to konieczne)
.step 8. dodać . 10 do pliku gem. Prawdopodobnie będziesz także chciał usunąć: .
.step 9. zestaw database.yml jak suggested here do:
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
Jeśli pracujesz nad projektem open source i nie chcesz, aby Twoje hasło udostępnione publicznie, mają wygląd w niektórych odpowiedziach na Securely providing the database password in a Rails app.
.step 10. z linii poleceń w perspektywie katalogu głównym Twojej aplikacji Rails za: rake db:migrate
Spowoduje to utworzenie nowego schematu i wszystkie tabele w bazie danych PostgreSQL.
.Krok 11. uruchom heroku db:pull
z wiersza poleceń (ponownie w katalogu głównym aplikacji rails), aby pobrać wszystkie dane w dół do nowej pustej bazy danych Postgres. Myślę, że w tym momencie twój klejnot klejnotów wykona tę pracę za Ciebie.
.step 12. Mam nadzieję, że nie ma kroku 12! ... i teraz powinno działać dla ciebie. Szczęśliwe debugowanie PostgreSQL RoR! Proszę edytować, lub daj mi znać, jeśli są jakieś błędy w tym.
Również tutaj znajduje się lista dodatkowych rzeczy, które mogą być interesujące/przydatne:
- To blog post about Postgres passwords, co oni za, dlaczego ich potrzebujesz, jak ich zmiany itd
- This, under 'Creating a spatial database', is useful for newbies to understand what pg_hba.conf is about i the second link that Reno gave above pod hasłem „Wykorzystywanie pgAdmin III GUI” jest przydatna testów aby sprawdzić, czy postgres rzeczywiście działa, zanim próbuje dopasować go Rails (tj spróbuj utworzyć bazę danych i umieszczenie stołu i jakieś dane do niego).
- W huge but very comprehensive Postgres documentation, I'd zacząć od strony 58, "I. seminarium'. Następnie na stronie pdf 431 (!) Znajduje się "Rozdział 17. Konfiguracja i działanie serwera", który również okazał się przydatny.
po prostu zainstalować PostgreSQL od https : //postgrespro.com/windows, wszystkie inne ustawienia - popularny sposób. – prograils