[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Problems upgrading from sql-ledger 1.6.6
- Subject: Problems upgrading from sql-ledger 1.6.6
- From: Mads Kiilerich <..hidden..>
- Date: Sun, 15 Oct 2006 01:06:59 +0200
Hi,
I'm a *ledger* newbie, so I post this long story to get some feedback 
before posting bug-reports or trying to fix problems already solved...
I'm trying to upgrade a very old sql-ledger 1.6.6 to 
ledger-smb-1.1.1d.tar.gz
I have read README.sql-ledger and run SL2LS.pl. (The wording in the 
README could be improved; there seems to be some redudancy or confusion 
in the references to SL2LS.pl...)
When logging in to the system to get the database upgraded I get
   [Sat Oct 14 17:07:14 2006] [error] [client x.x.x.x] DBD::Pg::st
   execute failed: ERROR: relation "employee" does not exist, referer: ...
   [Sat Oct 14 17:07:14 2006] [error] [client x.x.x.x] DBD::Pg::st
   fetchrow_array failed: no statement executing, referer: ...
   [Sat Oct 14 17:07:14 2006] [error] [client x.x.x.x] DBD::Pg::db
   selectrow_array failed: ERROR: column "employeenumber" does not
   exist, referer: ...
   [Sat Oct 14 17:07:14 2006] [error] [client x.x.x.x] DBD::Pg::db do
   failed: ERROR: column "employeenumber" of relation "defaults" does
   not exist, referer: ...
   [Sat Oct 14 17:07:14 2006] [error] [client x.x.x.x] Can't call
   method "dberror" on an undefined value at LedgerSMB/Form.pm line
   2640., referer: ...
   [Sat Oct 14 17:07:14 2006] [error] [client x.x.x.x] Compilation
   failed in require at /account/login.pl line 104., referer: ...
   [Sat Oct 14 17:07:14 2006] [error] [client x.x.x.x] Premature end of
   script headers: login.pl, referer: ...
The employee relation is introduced in Pg-upgrade-1.8.4-1.8.5.sql. But 
the code in User.pm indicates that that the error isn't critical. Fair 
enough but nice to get fixed...
The dberror bug seems to be a typo:
--- LedgerSMB/Form.pm.org 2006-10-14 23:29:54.000000000 +0200
+++ LedgerSMB/Form.pm 2006-10-14 23:30:15.000000000 +0200
@@ -2637,7 +2637,7 @@
$query = qq|UPDATE defaults
SET $fld = '$dbvar'|;
- $dbh->do($query) || $form->dberror($query);
+ $dbh->do($query) || $self->dberror($query);
if ($closedb) {
$dbh->commit;
I tried again with that fix, and now I got the following on the screen:
   Error!
   UPDATE defaults
   SET employeenumber = '1'
   ERROR: column "employeenumber" of relation "defaults" does not exist
It seems like the code setting defaults can't handle that the relation 
is missing. As a temporary hack I commented the code out:
--- LedgerSMB/User.pm.org 2006-10-15 00:05:15.000000000 +0200
+++ LedgerSMB/User.pm 2006-10-14 23:44:43.000000000 +0200
@@ -140,13 +140,13 @@
$sth->finish;
if (! $id) {
- my ($employeenumber) = $form->update_defaults(\%myconfig, 
"employeenumber", $dbh);
+# my ($employeenumber) = $form->update_defaults(\%myconfig, 
"employeenumber", $dbh);
- $query = qq|INSERT INTO employee (login, employeenumber, name, workphone,
- role)
- VALUES ('$login', '$employeenumber', '$myconfig{name}',
- '$myconfig{tel}', '$myconfig{role}')|;
- $dbh->do($query);
+# $query = qq|INSERT INTO employee (login, employeenumber, name, workphone,
+# role)
+# VALUES ('$login', '$employeenumber', '$myconfig{name}',
+# '$myconfig{tel}', '$myconfig{role}')|;
+# $dbh->do($query);
}
$dbh->disconnect;
@@ -851,10 +851,10 @@
} else {
- my ($employeenumber) = Form::update_defaults("", \%$self, 
"employeenumber", $dbh);
- $query = qq|INSERT INTO employee (login, employeenumber, name, 
workphone, role, email, sales)
- VALUES ('$login', '$employeenumber', '$self->{name}',
- '$self->{tel}', '$self->{role}', '$self->{email}', '1')|;
+# my ($employeenumber) = Form::update_defaults("", \%$self, 
"employeenumber", $dbh);
+# $query = qq|INSERT INTO employee (login, employeenumber, name, 
workphone, role, email, sales)
+# VALUES ('$login', '$employeenumber', '$self->{name}',
+# '$self->{tel}', '$self->{role}', '$self->{email}', '1')|;
}
$dbh->do($query);
I tried again and got:
   Upgrading to Version 1.1.1c ...
   Error!
   update defaults set fxgain_accno_id = (select id from chart where
   chart.accno = temp.accno)
   ERROR: missing FROM-clause entry in subquery for table "temp"
The problem is seen for the first time in Pg-upgrade-1.6.0-1.8.0.sql 
where "temp.accno" seems to be a shortcut for "(select accno from temp)" 
- but it doesn't work.
Google gave me 
http://www.mail-archive.com/..hidden../msg02375.html, and 
adding "add_missing_from=true" to postgresql.conf fixed THAT problem.
(Btw: It would be very nice to be told on the error page which script it 
was that failed...)
(Btw: After having unlocked in admin.pl the admin is shown a loginbox 
again for no reason...)
Finally I got the "oids" problem mentioned in the sql-ledger faq. It 
would be nice to mention/fix it in ledger-smb too. I "fixed" that by 
adding "default_with_oids = on" to postgresql.conf.
FINALLY the upgrade succeded!  :-)
BUT... menu.pl and some other files was previously a symlink to am.pl. 
The upgrade instructions says "copy the files from the tarball over your 
existing SQL-Ledger directory". The result will be files with the wrong 
content. What is the best way to upgrade?
/Mads