sql >> Databasteknik >  >> RDS >> PostgreSQL

Bash Script för att installera PostgreSQL - Fungerar inte

Den del som är uppenbart fel i ditt skript är att det förväntar sig raderna efter su - postgres att köras som postgres-användare. Detta kommer inte att hända.

I batchläge, su - postgres startar och avslutas omedelbart eftersom inget kommando matas till den. Sedan exekveras nästa kommandon för skripten när användaren startar skriptet (förmodligen root) och de misslyckas.

Istället bör du skriva något så här:

su - postgres <<-'EOF'
  /usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data/
  /usr/local/pgsql/bin/postmaster -D /usr/local/pgsql/data
  /usr/local/pgsql/bin/createdb test
EOF
# the lines after the EOF will be executed again as the initial user

Förslagen i kommentarerna förutsätter att du har installerat postgresql via ett paket, men det är inte sammanhanget för frågan. När du installerar från källan med ./configure utan argument och make install , kommer den aldrig att installera något utanför /usr/local/pgsql . Det är helt normalt att inte ha något startskript under /etc i detta sammanhang.




  1. SQL-skript för att skapa infogningsskript

  2. Något fel med att använda Windows-1252 istället för UTF-8

  3. hämta och skriv ut värden efter kommaseparator från ett enda fält med hjälp av join (kodanta)

  4. Vilka fenomen försöker MySQL förhindra genom att låsa hela tabellen vid exekvering av Delete-satsen med villkoret på en icke-indexerad kolumn