Willkommen im kivitendo Forum! Hier erweitern und teilen AnwenderInnen und EntwicklerInnen ihr Wissen.

Teste kivitendo!

kivitendo Demo

kivitendo Demo mit Schweizer Kontenplan und neuem Layout

Unterstützt kivitendo mit der Basis-Subskription!

0 Punkte

Hallo zusammen,

auf meinem System läuft Apache 2.4.6 mit perl 5.18.1, außerdem laufen postgresql Versionen 8.4-9.3.
Ich komme nun (weder mit meinem alten LX Office 2.6.3) noch mit Kivitendo 3.0 mehr in die Buchhaltung. Andauernd erhalte ich einen Status 500 "Internal Server Error". Im Apache-Log sehe ich dann folgendes:

[Sun Nov 10 07:56:11.370181 2013] [:error] [pid 26105] DBI connect('','',...) failed: FATAL:  database "www-data" does not exist at /var/www/kivitendo/SL/DBConnect.pm line 10.\nCompilation failed in require at /var/www/kivitendo/SL/DB/Default.pm line 5.\n.......

Ich weiß noch, dass im alten Forum eine Lösung dafür war, doch das scheint ja abgeschalten zu sein?
Was kann ich denn noch probieren? An der Config hab ich nichts geändert.

Grüßle,
Simmerl

von

2 Antworten

0 Punkte

[Sun Nov 10 07:56:11.370181 2013] [:error] [pid 26105] DBI connect('','',...) failed: FATAL: database "www-data" does not exist at /var/www/kivitendo/SL/DBConnect.pm line 10.\nCompilation failed in require at /var/www/kivitendo/SL/DB/Default.pm line 5.\n.......

das sieht eher danach aus, als waere in der Config keine Datenbank eingetragen.

  • kommst Du auf die Authentifizierungsdagenbenk? (http://*/admin.pl)
  • Du musst mal schauen, unter welchen Ports welche Datenbank lauft. Wenn Du mehrere Postgresversionen installiert hast koennen die nicht alle auf dem Standard Port laufen (sieht man als root mit netstat -tunlp)
von (18.0k Punkte)

Hallo wulf,

danke für deine Antwort.
Auch auf die admin.pl komme ich leider nicht. Dort erhalte ich, wie auch bei login.pl einen 500 Internal Server Error.

one:/# netstat -tunlp | grep postgres
tcp 0 0 0.0.0.0:5432 0.0.0.0: LISTEN 22796/postgres
tcp 0 0 127.0.0.1:5433 0.0.0.0:
LISTEN 21760/postgres
tcp 0 0 127.0.0.1:5434 0.0.0.0: LISTEN 21596/postgres
tcp 0 0 127.0.0.1:5435 0.0.0.0:
LISTEN 22088/postgres
tcp6 0 0 :::5432 :::* LISTEN 22796/postgres

Ich habe nun auch versucht über 127.0.0.1 zu zu greifen (was ja keinen Unterschied machen sollte) und alle Ports durchprobiert, aber auch das geht nicht.
Die Fehlermeldung bleibt. Ich bleibe ratlos. :(

netstat -tunlp | grep postgres
tcp 0 0 0.0.0.0:5432 0.0.0.0: LISTEN 22796/postgres
tcp 0 0 127.0.0.1:5433 0.0.0.0:
LISTEN 21760/postgres
tcp 0 0 127.0.0.1:5434 0.0.0.0: LISTEN 21596/postgres
tcp 0 0 127.0.0.1:5435 0.0.0.0:
LISTEN 22088/postgres

Lies zum Thema mal: https://forum.kivitendo.de/1114/postgresql-update#voting_1115
Dabei hast Du Dich verdaddeld. Ist nicht schlimm, laestiger ist es wenn Debian Dir die Alte Version direkt abraumt.

Na Du hast vier Datenbankserver laufen. jewails einen auf tcp Port 5432, 5433, 5434 und 5435.
Das ist nicht verkehrt, macht man aber eigentlich nur zum Cluster migrieren. Auf welchen Datenbankserver Kivitendo zugreift stellst Du in der Konfig ein (Apache neustart nach Aenderungen nicht vergessen)
Jetzt solltest Du erst mal schauen wo in welcher Version, bzw in welchem Cluster Deine Datenbank steckt.

Eventuell mit als User postgres mal auf jeder Datenbank

sudo su -
su postgres
echo psql -h 127.0.0.1  -p 5432
echo psql -h 127.0.0.1  -p 5433
echo psql -h 127.0.0.1  -p 5434
echo psql -h 127.0.0.1  -p 5435

und alle Ports durchprobiert

wirklich, auch Apache Durchgestartet?

https://demo.kivitendo.de/doc/html/ch02s04.html#config.config-file.sections-parameters
unter 2.4.2 fSind die Datenbankeinstellungen beschreiben. Im Beispiel ist der Standard-Port 5432 eingestellt, da scheint Deine Datenbank ja nicht im Cluster zu sein, versuche also einfach mal 5433, 5434 und 5435 durch.

Entweder Du migriest das Claster in die aktuelle Version (ist am sinnvollsten), oder greifst auf die richtige Version zu (im Zweifel durchprobieren). Solltest aber ein Backup haben, ganz wichtig bevor Du auf die 3.0 zugreifst (eigentlich immer wichtig;).

Wenn die Datenbank auf dem gleichen Server lauft wie das kivitendo, sollte sie auch nur auf localhost lauschen. Das kannst Du aber zum Schluss gerade ziehen, wenn Du erst mal wieder drauf kommst.

Hallo wulf,

danke für deine Mühen.

Die Datenbanken sind alle auf 8.4 (5432) sagt zumindest psql \list wenn ich als su postgres drauf gehe.
Als www-data kommt aber die Meldung
> psql: FATAL: database "www-data" does not exist

Und das deckt sich ja mit dem Problem das kivitendo/lx-office sieht. Sieht für mich so aus als dürfte apache2.4 nicht auf die Datenbanken zugreifen wegen falscher Benutzerrechte.

Ich habe jetzt mal mit

createdb www-data

Die Datenbank angelegt und erhalte nun die Meldung
> role www-data does not exist

Ich bin ein Stück weiter, denke ich. Jetzt muss ich noch die role angelegt bekommen. Ach, nebenbei noch die Rechte von config/kivitendo.conf gecheckt (a+r).

psql: FATAL: database "www-data" does not exist

nein er glaubt Dein Datenbank heisst www-data

poste mal die Kivi-Config

createdb www-data

das ist der falsche Weg

Config ohne Comments

[authentication]
admin_password = dasposteichdochnicht
module = DB
cookie_name = kivitendo_session_id
session_timeout = 480
failed_login_penalty = 5
[authentication/database]
host = localhost
port = 5432
db = kivitendo_auth
user = kivitendo
password = dasposteichdochnicht
[authentication/ldap]
host = localhost
port = 389
tls = 0
attribute = uid
base_dn =
filter =
bind_dn =
bind_password =
[system]
language = de
dbcharset = UTF-8
[features]
webdav = 0
vertreter = 0
parts_show_image = 1
parts_image_css = border:0;float:left;max-width:250px;margin-top:20px:margin-right:10px;margin-left:10px;
parts_listing_images = 0
[paths]
userspath = users
spool = spool
templates = templates
memberfile = users/members
[mail_delivery]
method = smtp
sendmail = /usr/sbin/sendmail -t<%if myconfig_email%> -f <%myconfig_email%><%end%>
host = localhost
port = 587
security = none
login = dasposteichdochnicht
password = dasposteichdochnicht
[applications]
openofficeorg_writer = oowriter
xvfb = Xvfb
html2ps = html2ps
ghostscript = gs
latex = pdflatex
pg_dump = pg_dump
pg_restore = pg_restore
[environment]
path = /usr/local/bin:/usr/X11R6/bin:/usr/X11/bin
lib = /sw/lib/perl5
[print_templates]
latex = 1
excel = 0
opendocument = 1
openofficeorg_daemon = 1
openofficeorg_daemon_port = 2002
[task_server]
login =
debug = 1
run_as =
[periodic_invoices]
send_email_to = mb
email_from = kivitendo Daemon <root@localhost>
email_subject = Benachrichtigung: automatisch erstellte Rechnungen
email_template = templates/webpages/oe/periodic_invoices_email.txt
[self_test]
modules = Transactions
send_email_on_success = 0
log_to_file = 1
send_email_to =
email_from =
email_subject = kivitendo self test report
email_template = templates/mail/self_test/status_mail.txt
[console]
login =
history_file = users/console_history
log_file = /tmp/kivitendo_console_debug.log
[testing]
login = myxplace_standard
[debug]
dbix_log4perl = 0
dbix_log4perl_config = log4perl.logger = FATAL, LOGFILE

                 = log4perl.appender.LOGFILE=Log::Log4perl::Appender::File
                 = log4perl.appender.LOGFILE.filename=LXDEBUGFILE
                 = log4perl.appender.LOGFILE.mode=append
                 = log4perl.appender.LOGFILE.Threshold = ERROR
                 = log4perl.appender.LOGFILE.layout=PatternLayout
                 = log4perl.appender.LOGFILE.layout.ConversionPattern=[%r] %F %L %c - %m%n
                 = log4perl.logger.DBIx.Log4perl=DEBUG, A1
                 = log4perl.appender.A1=Log::Log4perl::Appender::File
                 = log4perl.appender.A1.filename=LXDEBUGFILE
                 = log4perl.appender.A1.mode=append
                 = log4perl.appender.A1.layout=Log::Log4perl::Layout::PatternLayout
                 = log4perl.appender.A1.layout.ConversionPattern=%d %p> %F{1}:%L %M - %m%n

global_level = ALL
watch_form = 0
show_debug_menu = 0
keep_temp_files = 0
restart_fcgi_process_on_changes = 0
file_name = /var/log/kivitendo/kivitendo-debug.log

host = localhost
port = 5432
db = kivitendoauth
user = kivitendo

Du musst mit

psql -U kivitendo -h localhost kivitendoauth

auf die Datenbank kommen. Tust Du das?

Achte darauf, dass keine weiteren konffigs unter conf rumliegen, die eventuell eingelesen werden.

Hallo wulf,

ja, das geht. Wenn ich es aber über kivitendo oder lx-office versuche steht im postgresql-log

2013-11-18 21:59:43 CET FATAL: role "www-data" does not exist

Aah, ich werde noch verrückt.

ja, das geht. Wenn ich es aber über kivitendo oder lx-office versuche steht im postgresql-log

schicke mal ein Listing des conf verzeichnisses.

Das Verzeichnis heißt bei mir "config".

ls -al /var/www/kivitendo/config/
total 32
drwxrwxr-x 3 www-data www-data 4096 Nov 18 22:17 .
drwxrwxr-x 24 www-data www-data 4096 Nov 9 21:15 ..
drwxr-xr-x 2 root root 4096 Nov 18 22:17 bak
-rw-rw-r-- 1 www-data www-data 49 Dec 10 2012 .gitignore
-rw-rw-r-- 1 www-data www-data 31 Dec 10 2012 .htaccess
-rw-rw-r-- 1 www-data www-data 10595 Nov 17 23:05 kivitendo.conf

Im Verzeichnis bak habe ich die defaults und die alte lx_office.conf liegen.

Das passt alles nicht zusammen.

  • mehrere Installationen auf dem Rechner?

Ich vermute Du greifst mti dem Webserver nicht auf diese Installation zu.

Ich kapiere es ja auch nicht. Aber mein zugehöriger Abschnitt aus der apache-config sieht folgendermaßen aus. Und die Weiterleitung findet auch statt. Aber beim Zugriff auf die db geht nix mehr.

ServerName kivi.example.com ServerAlias www.kivi.example.com www.ipv6.kivi.example.com ipv6.kivi.example.com ServerAdmin kontakt@example.com DocumentRoot "/var/www/example.com/kivitendo/" ErrorLog "/var/log/apache2/svs-example.com-error.log" CustomLog "/var/log/apache2/svs-example.com-access.log" combined PerlOptions +Parent PerlSwitches -I/var/www/example.com/kivitendo AddHandler cgi-script .pl Alias /kivitendo/ /var/www/example.com/kivitendo/
Require all granted
Options ExecCGI Includes FollowSymlinks



Require all denied

Das sieht doch gar nicht soo schlecht aus. Und lx ist zwar da, liegt aber in den alten Verzeichnissen (/var/lib/ und /usr/lib/)

sorry, aber das wird zu zaeh, via Forum.

War da mal das Debian Pakte drauf, und er sucht die Konfig noch in /etc? Wo auch immer, aber Du hast da ein Pfad-Problem, Loesungsansaetze sind:

  • benoetigte Dateien (z.B. die Konfig) temporaer umbenennen ->wenn Kivi dann noch einen Konfig findest weisst Du es hat sie wo anders her.

  • frische saubere Installation machen -> denke das ist bei Dir klug.

  • jemand ran lassen der Uebung mit sowas hat

Ich klink mich hier aus

Ich habe jetzt immer weiter gesucht, auch auf einem anderen Server versucht zu installieren (dort findet installation_check Rose::DB nicht obwohl cpan Version 0.774 meldet).

Beim Aufruf auf der ursprünglichen Maschine ist mir allerdings bei installation_check folgendes gemeldet worden:

scripts/installation_check.pl
Can't open config file 'config/lx_office.conf.default' (no such file or directory) at SL/LxOfficeConf.pm line 36.

Erst als ich nen symbolischen Link im config-dir von kivitendo.conf auf lx_office.conf.default gesetzt habe lief das script durch (alles OK).

Was mich allerdings nach Lektüre im Forum immer mehr irritiert ist, dass bei mir im DBI connect(''...) steht, während andere dort Daten drin stehen haben. Scheint so als würde admin.pl/index.pl die config nicht finden während installation_check das richtige Verzeichnis findet.

0 Punkte

Salut Simmerl,

wenn als Fehlermeldung database "www-data" does not exist kommt, dass schaut es wohl so aus, dass eine Verbinung zu dem DB Listener aufgebaut wurde (schon mal gut) und der Open auf das Schema "www-data" nicht erfolgreich ist, weil das Schema nicht existiert (das ist schlecht).

Es ist also so, also würde ein Postbote das Mehrfamilienhaus über die Adresse ausfindig machen, aber den Briefkasten mit dem Zielnamen nicht finden.

(1) Falls Du mehrere Postgres Instanzen laufen hast, könnte es sein, dass Du den falschen Server angesprochen hat.
(2) Falls der konfigurierte Server korrekt ist, dann könnte es sein, dass die DB gelöscht wurde. Melde Dich auf dem DB-Host unter der Kennung postgres an und rufe dann den Postgres psql auf und gibt dann auf der Konsole den Befehl \l+' ein. Dann siehst Du, ob es eine www-data Datenbank auf dem Server gibt.
(3) so nebenbei finde ich den Namen www-data etwas ungewöhnlich!

von (880 Punkte)
...