Zur Anleitung "Probleme beim Update"

Hast du Probleme Admidio einzurichten? Hier kannst du Fragen rund um die Einrichtung stellen.
Antworten
Andree
Beiträge: 78
Registriert: 18. Jan 2008, 16:00
Wohnort: Celle
Kontaktdaten:

Zur Anleitung "Probleme beim Update"

Beitrag von Andree »

Hallo Markus,
ich schreibe mal auf diesem Wege die Antworten von mir. Damit man das besser nachvoll ziehen kann. Aber erstmal Danke für diese Anleitung.

Was habe ich jetzt gemacht.
- Alle 22 Tabellen gelöscht.
- Dann die SQL.DB (aus der 2.1.6) angepasst (den Präfix gesetzt) und importiert.
= alle 23 (ist eine mehr) Tabellen worden angelegt.
Die Tabellen sind jetzt in der InnoDB angelgt worden. Wobei bei GESAMT immernoch MyISAM steht :roll:

Import des Backups (ohne Struktur!) kommt das:

Code: Alles auswählen

-- phpMyAdmin SQL Dump
-- version 2.8.0.2
-- http://www.phpmyadmin.net
-- 
-- Host: localhost
-- Erstellungszeit: 19. Oktober 2009 um 20:16
-- Server Version: 5.0.32
-- PHP-Version: 5.2.0-8+etch15
-- 
-- Datenbank: `db`
-- 
-- 
-- Daten für Tabelle `adm_announcements`
-- 
-- 
-- Daten für Tabelle `adm_auto_login`
-- 
INSERT INTO `adm_auto_login` ( `atl_session_id` , `atl_org_id` , `atl_usr_id` , `atl_last_login` , `atl_ip_address` ) 
VALUES (

'45c0c049ebf29a1af3443', 1, 25, '2009-09-26 10:35:11', '79.201.237.'
), (
'62dff6fdb3eb64004a', 1, 1, '2008-10-21 22:29:58', '77.187.211.'
), 
'439a2aa297243ad8a453a2a', 1, 6, '2009-01-03 16:03:27', '89.53.204.'
), (
'2e8d28d70ca7d13b1e6', 1, 25, '2009-02-26 20:52:36', '145.254.141.1'
), (
'a051a5da6c9279429421', 1, 29, '2009-05-02 20:57:55', '79.222.240.1'
);


MySQL meldet:  

#1452 - Cannot add or update a child row: a foreign key constraint fails (`usr_web235_6/adm_auto_login`, CONSTRAINT `adm_FK_ATL_USR` FOREIGN KEY (`atl_usr_id`) REFERENCES `adm_users` (`usr_id`))
die AutoLogin Daten habe ich etwas geändert....

Dann habe ich folgende zeilen gelöscht

Code: Alles auswählen

-- 
-- Daten für Tabelle `adm_auto_login`
-- 

INSERT INTO `adm_auto_login` (`atl_session_id`, `atl_org_id`, `atl_usr_id`, `atl_last_login`, `atl_ip_address`) VALUES ( ... );
dann kommt folgende Meldung:

Code: Alles auswählen

SQL-Befehl: 

-- phpMyAdmin SQL Dump
-- version 2.8.0.2
-- http://www.phpmyadmin.net
-- 
-- Host: localhost
-- Erstellungszeit: 19. Oktober 2009 um 20:16
-- Server Version: 5.0.32
-- PHP-Version: 5.2.0-8+etch15
-- 
-- Datenbank: `usr_web235_6`
-- 
-- 
-- Daten für Tabelle `adm_announcements`
-- 
-- 
-- Daten für Tabelle `adm_categories`
-- 
INSERT INTO `adm_categories` ( `cat_id` , `cat_org_id` , `cat_type` , `cat_name` , `cat_hidden` , `cat_system` , `cat_sequence` ) 
VALUES ( 1, 1, 'ROL', 'Allgemein', 1, 0, 1 ) , ( 2, 1, 'ROL', 'Gruppen', 1, 0, 3 ) , ( 5, 1, 'LNK', 'Allgemein', 0, 0, 1 ) , ( 6, 1, 'LNK', 'Stammtische', 1, 0, 4 ) , ( 7, 1, 'LNK', 'Rechtliche Hinweise & Co', 1, 0, 3 ) , ( 8, 1, 'ROL', 'Beiträge', 1, 0, 2 ) , ( 9, 1, 'LNK', 'Bücher', 1, 0, 2 ) , ( 10, NULL , 'USF', 'Stammdaten', 0, 1, 1 ) , ( 11, NULL , 'USF', 'Messenger', 0, 0, 2 ) , ( 12, NULL , 'USF', 'Zusätzliche Daten', 0, 0, 3 ) ;



MySQL meldet:  

#1452 - Cannot add or update a child row: a foreign key constraint fails (`usr_web235_6/adm_categories`, CONSTRAINT `adm_FK_CAT_ORG` FOREIGN KEY (`cat_org_id`) REFERENCES `adm_organizations` (`org_id`)) 
Vielleicht hast du jetzt wieder einen Ansatzpunkt. Teamviewer und anderes steht gerne Bereit 8) :lol:

Dieses löschen kann ich mit fast jedem Bereich machen ... er arbeitet sich nach unten weiter durch. Gibt es wirklich keine möglichkeit, die Daten anderes in Datenbank wieder zu bekommen???

@Alle anderen: bitte noch nicht stören ... :wink:
Bis dann

Andree
Benutzeravatar
fasse
Administrator
Beiträge: 6166
Registriert: 12. Nov 2005, 16:06

Beitrag von fasse »

Hallo Andree,

dann ist wohl leider doch noch etwas Handarbeit nötig.

Der Fehler liegt jetzt darin, dass die Tabellen alphabethisch gesichert wurden. Beim Einspielen hast du jetzt das Problem, dass z.B. die Tabelle auto_login eine Referenz auf die Usertabelle hat, welche aber erst am Ende eingespielt wird.

Hier musst du wohl jetzt Tabellenblock für Tabellenblock einzeln nach folgendem Schema einspielen:
%PRAEFIX%_organizations;
%PRAEFIX%_texts;
%PRAEFIX%_preferences;
%PRAEFIX%_categories;
%PRAEFIX%_users;
%PRAEFIX%_user_fields;
%PRAEFIX%_user_data;
%PRAEFIX%_sessions;
%PRAEFIX%_auto_login;
%PRAEFIX%_roles;
%PRAEFIX%_role_dependencies;
%PRAEFIX%_members;
%PRAEFIX%_announcements;
%PRAEFIX%_dates;
%PRAEFIX%_folders;
%PRAEFIX%_files;
%PRAEFIX%_folder_roles;
%PRAEFIX%_guestbook;
%PRAEFIX%_guestbook_comments;
%PRAEFIX%_links;
%PRAEFIX%_photos;

Zuerst also die Tabelle adm_organizations, dann die Tabelle adm_texts usw.

So sollte es dann hoffentlich klappen.

Gruß
Fasse
milkaman
Former team member
Beiträge: 129
Registriert: 22. Feb 2006, 18:07

Beitrag von milkaman »

Hallo Andree,

du brauchst die Tabellen evtl. nicht zu sortieren.
Du kannst während dem Import die foreign key checks ausschalten:

An den Anfang der SQL Datei packst du
SET FOREIGN_KEY_CHECKS=0;

und am Ende alles wieder einschalten:

SET FOREIGN_KEY_CHECKS=1;

Wenn man beim Erstellen des DB Exports in phpMyAdmin die Option "Fremdschlüsselüberprüfung deaktivieren" auswählt werden die beiden Befehle schon von phpMyAdmin eingefügt.

Gruß

Roland
Andree
Beiträge: 78
Registriert: 18. Jan 2008, 16:00
Wohnort: Celle
Kontaktdaten:

Beitrag von Andree »

@Milkaman:
Deine Idee habe ich versucht. Leider ohne erfolg. Werde jetzt nach und nach einzelend mal importieren.

Code: Alles auswählen

-- 
-- Daten für Tabelle `adm_dates`
-- 
INSERT INTO `adm_dates` ( `dat_id` , `dat_org_shortname` , `dat_global` , `dat_begin` , `dat_end` , `dat_all_day` , `dat_description` , `dat_location` , `dat_headline` , `dat_usr_id` , `dat_timestamp` , `dat_last_change` , `dat_usr_id_change` ) 
VALUES ( 1, 'TF-C', 0, '2008-03-07 19:30:00', '2008-03-07 23:00:00', 0, 'Hier können wir die Top-Listen vielleicht erweitern:\r\n\r\nTop 1: Begrüßung und Vorstellung neuer Mitglieder.\r\nTop 2:\r\n\r\n[i]Zum Bearbeiten und Erweitern dieses Termins bitte oben Rechts in der Ecke auf [img]http://xxxxx.de/adm_program/images/edit.png[/img] klicken![/i]', 'TUS Clubheim', 'Nächster Stammtisch', 1, '2008-01-27 18:17:59', '2008-01-27 18:20:43', 1 ) ;

MySQL meldet:  

#1054 - Unknown column 'dat_org_shortname' in 'field list' 
Bis gleich!

Leider auch nicht.
Beim Import der adm_users kommt (nach obiger reihenfolge).

Code: Alles auswählen

SQL-Befehl: 

-- Daten für Tabelle `adm_users`
-- 
INSERT INTO `adm_users` ( `usr_id` , `usr_login_name` , `usr_password` , `usr_new_password` , `usr_photo` , `usr_text` , `usr_activation_code` , `usr_last_login` , `usr_actual_login` , `usr_number_login` , `usr_date_invalid` , `usr_number_invalid` , `usr_last_change` , `usr_usr_id_change` , `usr_valid` , `usr_reg_org_shortname` ) 
VALUES ( 1, 'Benutzername', 'daskennewortverschluesselt', NULL , 

HEX WERTE... bestimmt das Bild - oder?

MySQL meldet:  

#1054 - Unknown column 'usr_last_change' in 'field list' 
Bis dann

Andree
Benutzeravatar
fasse
Administrator
Beiträge: 6166
Registriert: 12. Nov 2005, 16:06

Beitrag von fasse »

Hallo Andree,

das schaut danach aus, als ob du die db.sql von der 2.1er Version genommen hast.
Du müsstest aber die db.sql von der 2.0er Version nehmen. (Ist in den Vorbereitungen beschrieben)

Gruß
Markus
Andree
Beiträge: 78
Registriert: 18. Jan 2008, 16:00
Wohnort: Celle
Kontaktdaten:

Beitrag von Andree »

Ach so... eine von der bereits installieren Version ... okay!



Sooo..

also ich habe jetzt die Version 2.0.9 db.sql genommen für meine 2.0.5 Datenbank.
Import läuft der sql.db und auch von der Datensicherung (so wie Milkaman beschrieben hat geht es auch!).

Und nun?
Erster Versuch war, jetzt die Daten vom 2.1.6 auf den Webserver zu kopieren, und dann das Update starten. Leider kommt dann der alte Fehler (fehlermeldung liefer ich gleich nach!).
  • "Update verfügbar" und dann Fehler,
    noch mal das Update was dann "läuft"
    jedoch sagt dann die Mitgliederverwaltung wieder, "unterschiedliche Datenbank Versionen" ...
Was muss ich jetzt Updaten?, Wie muss ich vorgehen!

Ich probiere mal was.... :P
Habe jetzt das Verzeichnis auf dem Server gelöscht und mit einer "frischen" 2.1.x Version aufgespielt. Kommt dann die Meldung "Update auf Version 2.1.6 - Eine Aktualisierung der Datenbank ist erforderlich"

Leider nicht. Hier die Fehlermeldung:

Code: Alles auswählen

S Q L - E R R O R

CODE: 1452

Cannot add or update a child row: a foreign key constraint fails (`usr_web235_6/adm_user_data`, CONSTRAINT `adm_FK_USD_USR` FOREIGN KEY (`usd_usr_id`) REFERENCES `adm_users` (`usr_id`))

B A C K T R A C E


FILE: adm_program/system/db/mysql.php
LINE: 193
CALL: DB->db_error()

FILE: adm_program/system/db/mysql.php
LINE: 77
CALL: MySqlDB->db_error()

FILE: adm_install/update.php
LINE: 189
CALL: MySqlDB->query()
Kann man das Update auch über die PHPMyAdmin oberfläche einspielen?

Ist das eigentlich richtig, dass ich beim Import der 2.0.9 keine adm_users_old habe? Die meckert er an beim Import. Habe dann diesen Bereich herausgenommen.

#1146 - Table 'usr_web235_6.adm_user_data_old' doesn't exist


#####
Jetzt habe ich einen "guten" Stand. Habe die Struktur, dann meine Alte DB eingespielt, ein Update auf die 2.0.9 gemacht und DANN auf die 2.1.6 !!! läuft soweit ... melde mich noch mal!
Bis dann

Andree
Benutzeravatar
fasse
Administrator
Beiträge: 6166
Registriert: 12. Nov 2005, 16:06

Beitrag von fasse »

Hallo Andree,

das ist für mich jetzt etwas verwirrend. Also du hast es jetzt fehlerfrei geschafft, indem zu zuerst von der 2.0.5 auf die 2.0.9 upgedatet hast und danach auf die 2.1.6.

Zwischen der 2.0.5 und der 2.0.9 gab es aber keine Änderungen in der Datenbank.

Vielleicht ist vorher noch etwas anderes schief gelaufen.

Jetzt läuft alles bei dir ?

Gruß
Fasse
Andree
Beiträge: 78
Registriert: 18. Jan 2008, 16:00
Wohnort: Celle
Kontaktdaten:

Beitrag von Andree »

fasse hat geschrieben:Hallo Andree,

das ist für mich jetzt etwas verwirrend. Also du hast es jetzt fehlerfrei geschafft, indem zu zuerst von der 2.0.5 auf die 2.0.9 upgedatet hast und danach auf die 2.1.6.

Zwischen der 2.0.5 und der 2.0.9 gab es aber keine Änderungen in der Datenbank.

Vielleicht ist vorher noch etwas anderes schief gelaufen.

Jetzt läuft alles bei dir ?

Gruß
Fasse
Soweit ich das jetzt sagen kann läuft alles außer die Downloads - die muss ich neu hochladen.

Mein vorgehen war jetzt wie folgt:
Datenbanktechnisch
Ausgangs-DB: 2.0.5 (stand so auch in der Datenbank drin!)
Datensicherung (Backup) erstellt ohne Fremdschlüssel und Struktur
Löschen aller Datenbanken
Import der DB.SQL aus der 2.0.9
Löschen der Tabelle user_data_old aus dem Backup
Backup wieder eingespielt

Webserver
Backup aller Daten
Löschen aller Daten (außer config.php)
Überspielen der 2.0.9 Daten
adm_install/update.php aufgerufen. Meldung kam "Update erforderlich!"
dann wieder alle Daten gelöscht (hätte bestimmt nicht sein müssen, außer die config.php)
Überspielen der 2.1.6
wieder das update.php ausgwählt ("Update erforderlich")

Gemacht, getan ... läuft bisher!!!

Stand jetzt:
23 Tabellen (ohne eine *_old)
Typ: InnoDB
Kollation: utf8_general_ci
Bei Gesamt steht immer noch MyISAM mit ca. 1.8 MB
Bis dann

Andree
Benutzeravatar
fasse
Administrator
Beiträge: 6166
Registriert: 12. Nov 2005, 16:06

Beitrag von fasse »

Hallo Andree,

die Tabelle adm_user_data_old ist beim ersten Update vor ein paar Monaten auf die 2.1.6 angelegt und nicht mehr gelöscht worden.
Diese Tabelle hat dann jetzt wohl auch beim ersten Versuch uns im Weg gestanden.

Aber es scheint ja der richtige Weg zu sein. Ich werd die Doku noch in wenig anpassen und dann sollte es auch für andere möglich sein, so die DB wieder auf den aktuellen Stand zu bringen.

Gruß
Fasse
Antworten