Postgres

Installera

Instruktioner på engelska:
postgresql.org/wiki/…

När installationen är klar kanske du möts av ungefär detta:

postgresql: stable 10.1 (bottled), HEAD
Object-relational database system
https://www.postgresql.org/
==> Caveats
To migrate existing data from a previous major version of PostgreSQL, see:
  https://www.postgresql.org/docs/10/static/upgrading.html

  You will need your previous PostgreSQL installation from brew to perform
  `pg_upgrade` or `pg_dumpall` depending on your upgrade method.

  Do not run `brew cleanup postgresql` until you have performed the migration.

To have launchd start postgresql now and restart at login:
  brew services start postgresql
Or, if you don't want/need a background service you can just run:
  pg_ctl -D /usr/local/var/postgres start

Det vi framför allt vill fokusera på är

To have launchd start postgresql now and restart at login:
  brew services start postgresql
Or, if you don't want/need a background service you can just run:
  pg_ctl -D /usr/local/var/postgres start

Vi behöver alltså starta igång postgresql efter att vi installerat det!

För att starta postgres kör du: brew services start postgresql

Om du vill avbryta postgres-processen kör du brew services stop postgresql


Felsökning!

Om du möts av

psql: could not connect to server: No such file or directory
    Is the server running locally and accepting
    connections on Unix domain socket "/tmp/.s.PGSQL.5432"?

så kanske du hade en tidigare version av postgres installerad på din dator? Eller så kanske något har hakat upp sig.


Här följer förslag på hjälp!

Få en tydligare indikation på vad som kan vara tokigt genom att köra

postgres -D /usr/local/var/postgres

Då kan du t.ex. få svaret:

2018-01-01 15:34:19.680 CET [16929] FATAL:  database files are incompatible with server
2018-01-01 15:34:19.680 CET [16929] DETAIL:  The data directory was initialized by PostgreSQL version 9.6, which is not compatible with this version 10.1.

Aha! ja, i sådana fall behöver jag antingen installera äldre version av postgres för att kunna komma åt databaserna för att kunna exportera datan. Jag har ingen data sparad lokalt som spelar roll för produktion och kan alltså radera databaserna och köra om ifrån början. Tanken är ju att all data du använder lokalt är genererad låtsas-data, och vad du än har som lirar i produktion, så kan du ju välja att exportera den datan innan du genomför förändringar! :)

På osx, om du installerade postgres med homebrew, ska du kanske köra
/usr/local/Cellar/postgresql/10.1/bin/createuser -s postgres

Där du byter ut 10.1 till den version som är aktuell för dig just nu.


“a pid file was blocking postgres from starting up. To fix it:”

rm /usr/local/var/postgres/postmaster.pid

Den letar efter en särskild fil på ett ställe, men den finns egentligen på ett annat ställe. Lägg in en länk till rätt fil på den plats där postgres letar efter filen:

sudo mkdir /var/pgsql_socket/
sudo ln -s /private/tmp/.s.PGSQL.5432 /var/pgsql_socket/

Förslagen och svaren kommer ifrån olika svar via stackoverflow!


Särskilda inställningar just för bunko

För att din app ditt program ska kunna prata med postgres och skapa upp nya databaser o.s.v. så behöver vi en användare och ett lösenord som programmet kommer åt. Du kan välja att sätta “vad du vill” senare, men vi börjar med att lägga till en användare “postgres” (om det inte redan finns) och lägger till lösenordet “postgres” - så kommer din phoenix-app att lira direkt! :D

På osx, om du installerade postgres med homebrew kan du behöva köra
/usr/local/Cellar/postgresql/10.1/bin/createuser -s postgres

Vem ligger bakom denna kurs?

Victoria Wagman som har arbetat som lärare i webbutveckling, och idag arbetar som programmerare hos 46elks.

Detta material byggs upp lite i taget.