PostgreSQL

Aus Limbas Wiki

<-- zurück zur Hauptseite


Inhaltsverzeichnis

PostgreSQL updaten

Für einige Distributionen muß die PostgreSQL Datenbank und insbesondere Ihr ODBC Treiber aktualisiert werden.
Limbas wurde auf PosgreSQL ab V 8.3.7 getestet.
Für CentOS kann die Datenbank durch folgende Befehle upgedatet werden.

wget http://yum.pgsqlrpms.org/reporpms/8.4/pgdg-centos-8.4-1.noarch.rpm
rpm -i pgdg-centos-8.4-1.noarch.rpm
yum update

PostgreSQL Installation für Limbas

Ab Version 2.0.22 unterstützt Limbas UTF8 im Beta Stadium. Falls UTF8 nicht benötigt, wird ein ISO Encoding empfohlen. Limbas konvertiert die Datums und Zeitformate selbstständig und benötigt das Datumsformat "DD.MM.YYYY". Da PostgreSQL standardmäßig mit "Lokalisierung" installiert ist müssen ein paar zusätzliche Schritte beachtet werden.

Datenbankcluster anlegen/erneuern

-postgres server stopen (root)

/etc/init.d/postgresql stop

-alten Cluster löschen:

Verzeichnisinhalt (cluster) von "/var/lib/pgsql/data" löschen (Bitte beachten: löscht schon vorhandene Datenbanken!)

- dann neuen Cluster ohne Lokalalisierung anlegen:
Generell sollte auf die Lokalisierung aus Performancegründen verzichtet werden.
Bei Problemen mit Umlauten kann "NUR" der ctype entsprechend gesetzt werden. Außerdem erwartet Limbas das Datumsformat im Format JJJJ-MM-DD

su - postgres
initdb --local=C
[ initdb --local=C --lc-ctype=de_DE ]
exit


Server starten (root)

/etc/init.d/postgresql start

Datenbank anlegen

mögliche Kodierungen wären z.B. LATIN1 oder SQL_ASCII oder UTF8

# su - postgres
# psql
# create user limbasuser password 'limbaspass';
# create database limbas WITH ENCODING 'SQL_ASCII' OWNER limbasuser;
# \q
# createlang plpgsql limbas

Unix ODBC einrichten

unixODBC

Zusatzinformationen

Version 9.1

Seit Version 9.1 werden Backslashes anders behandelt. (http://www.postgresql.org/docs/9.2/static/release-9-1.html) Das stellt ein Problem mit den vorherigen Versionen von Limbas dar. Um mit diesen Versionen arbeiten zu können muß die Konstante LMB_DBFUNC_UMASCB in der Datei lib/db/db_postgres.lib angepasst werden.

#define("LMB_DBFUNC_UMASCB","\\\\");
define("LMB_DBFUNC_UMASCB","\\");

Zusätzlich müssen die Funktionen dbf_6 und dbf_7 angepasst werden:

function dbf_6($p){
	return str_replace("'","''",$p);
}

benötigte Funktionen erstellen

Diese Funktionalität wird während der Installation automatisch ausgeführt und dient nur zur Dokumentation.

Limbas benötigt eine definierte Funktion die von Triggern ausgeführt werden kann. Sie behandelt die angezeigten Werte bei hinzufügen oder entfernen von Verknüpfungen. Limbas generiert den zugehörigen Trigger selbst und kann bei Bedarf über die Adminfunktion tools->system->trigger in Limbas erneuert werden. Die Funktion kann nur erstellt werden wenn die benötigte Sprache plpgsql der Datenbank hinzugefügt worden ist.

CREATE OR REPLACE FUNCTION lmb_vkn() RETURNS trigger AS '
DECLARE

statement VARCHAR(200);
nid INTEGER;
 
BEGIN

IF TG_ARGV[2] = ''+'' THEN
	 nid = new.id;
END IF;
IF TG_ARGV[2] = ''-'' THEN
	nid = old.id;
END IF;

statement = ''UPDATE '' || TG_ARGV[0] || '' SET '' || TG_ARGV[1] || '' = '' || TG_ARGV[1] || '' '' || TG_ARGV[2] || '' 1 WHERE id = '' || nid;
EXECUTE statement;


IF TG_ARGV[3] = '''' THEN
	return new;
END IF;

IF TG_ARGV[2] = ''+'' THEN
	 nid = new.verkn_id;
END IF;
IF TG_ARGV[2] = ''-'' THEN
	nid = old.verkn_id;
END IF;


statement = ''UPDATE '' || TG_ARGV[3] || '' SET '' || TG_ARGV[4] || '' = '' || TG_ARGV[4] || '' '' || TG_ARGV[2] || '' 1 WHERE id = '' || nid;
EXECUTE statement;


return new;

END; 
'  LANGUAGE 'plpgsql';

allgemeine Tools

Übersicht aller Datenbanken

psql -l

Nutzer anlegen

createuser benutzername

oder per SQL Befehl: create user benutzername password 'geheim'

Nutzer löschen

dropuser benutzername

oder per SQL Befehl: DROP USER name;

Datenbank mit Besitzer per Konsole anlegen

su - postgres
createdb -O benutzername limbas

Datenbank löschen

su - postgres
dropdb dbname

plpgsql languge hinzufügen

createlang plpgsql limbas

Server neu starten

pg_ctl reload




To dump a database:

$ pg_dump mydb > db.out

To reload this database:

$ psql -d database -f db.out

To dump a database called mydb that contains large objects to a tar file:

$ pg_dump -Ft -b mydb > db.tar

To reload this database (with large objects) to an existing database called newdb:

$ pg_restore -d newdb db.tar
Meine Werkzeuge
In anderen Sprachen