Änderung multiobject auf Datenbank-Ebene

Hier können Sie Fragen bezüglich des Datenbank-/Objektmoduls stellen.
plan4
Member
Beiträge: 56
Registriert: Do 1. Jan 1970, 02:00
Wohnort: Bremen
Kontaktdaten:

Änderung multiobject auf Datenbank-Ebene

Beitragvon plan4 » Mo 21. Nov 2011, 11:33

Hallo zusammen,

ich versuche verzweifelt, die Inhalte eines "Multi Objekt"-Feldes auf Ebene der Datenbank-Tabelle zu ändern. Der Grund ist, dass ich in Excel vorbereitete Datensätze mit Relationen zu anderen Daten importieren muss. Beim webEdition-Import gibt es hierzu offenbar keine Möglichkeit, daher bleibt nur der direkte Weg über die Datenbank.

Ich habe also die serialisierten Daten entsprechend vorbereitet und schreibe sie in das Feld multiobject_XYZ der zugehörigen Tabelle, in meinem Fall tblObject_3.

Beispiel:

Code: Alles auswählen

a:3:{s:5:"class";s:1:"1";s:3:"max";i:0;s:7:"objects";a:2:{i:0;s:1:"4";i:1;s:1:"14";}}
Das Ganze zeigt nur keine Wirkung, die verknüpften Objekte werden weder in webEdition noch in einer <we:listview type="multiobject"> angezegeigt. Wenn ich über das webEdition-Frontend nachträglich manuell die Zuweisungen vornehme, beinhaltet das Datenbankfeld exakt den gleichen String.

Die zugehörigen Datensätze in der Tabelle tblTemporaryDoc habe ich regelmäßig nach Datenbank-Updates gelöscht. Daten anderer Felder werden danach korrekt angezeigt.

Was macht webEdition noch nach Speicherung/Veröffentlichung eines Objekts mit multiobject-Daten?

Ich hoffe, einer der Spezialisten weiß eine Antwort.

Gruß
Dietmar Könken

WBTMagnum
webEdition Partner
webEdition Partner
Beiträge: 1825
Registriert: Di 7. Mär 2006, 16:50
Wohnort: Wien
Kontaktdaten:

Re: Änderung multiobject auf Datenbank-Ebene

Beitragvon WBTMagnum » Mo 21. Nov 2011, 11:51

Hallo Dietmar,

Nur so eine Idee: Hast du nach dem Ausführen des SQL-Statements einen Rebuild der Objekte durchgeführt?

Ansonsten sollte das meiner Ansicht nach schon so klappen. Mit Multiobjekten haben wir so eine Migration allerdings auch noch nie durchgeführt.


Liebe Grüße,
Sascha

plan4
Member
Beiträge: 56
Registriert: Do 1. Jan 1970, 02:00
Wohnort: Bremen
Kontaktdaten:

Re: Änderung multiobject auf Datenbank-Ebene

Beitragvon plan4 » Mo 21. Nov 2011, 12:00

Ja, Rebuild habe ich auch schon probiert. Keine Wirkung :-(

mokraemer
Senior Member
Beiträge: 3619
Registriert: So 8. Aug 2010, 01:23
Wohnort: Mainz

Re: Änderung multiobject auf Datenbank-Ebene

Beitragvon mokraemer » Mo 21. Nov 2011, 15:42

Zuerst: die MultiObjekt Spalten stehen auf der Agenda geändert zu werden - also auf jeden Fall immer im Update-Log schauen. Soll in Zukunft über eine (korrekte) Link-Tabelle passieren.
Dann: hast du auch tblObjectFiles befüllt?

Vielleicht finden sich ja Leute das man den Import in WE sponsort.
webEdition-Kern-Entwickler

plan4
Member
Beiträge: 56
Registriert: Do 1. Jan 1970, 02:00
Wohnort: Bremen
Kontaktdaten:

Re: Änderung multiobject auf Datenbank-Ebene

Beitragvon plan4 » Mo 21. Nov 2011, 19:41

mokraemer hat geschrieben:Dann: hast du auch tblObjectFiles befüllt?
Ja, ich habe zunächst einen Import über webEdition gemacht (wodurch die tblObjectFiles korrekt befüllt wurde) und dann die nicht auf diesem Wege importierbaren multiobject-Daten in der tblObject... aktualisiert.

ThomasGoebe

Re: Änderung multiobject auf Datenbank-Ebene

Beitragvon ThomasGoebe » Mo 21. Nov 2011, 22:14

Hallo plan4,

schau mal nach, ob die Daten nicht auch in der tblContent stehen. Ich weiss es gerade nicht, kann aber sein.

Gruß
Thomas

mokraemer
Senior Member
Beiträge: 3619
Registriert: So 8. Aug 2010, 01:23
Wohnort: Mainz

Re: Änderung multiobject auf Datenbank-Ebene

Beitragvon mokraemer » Di 22. Nov 2011, 00:29

in content sollten sie eigentlich nicht stehen...
webEdition-Kern-Entwickler

plan4
Member
Beiträge: 56
Registriert: Do 1. Jan 1970, 02:00
Wohnort: Bremen
Kontaktdaten:

Re: Änderung multiobject auf Datenbank-Ebene

Beitragvon plan4 » Di 22. Nov 2011, 09:30

In tblContent habe ich auch nichts gefunden, was darauf deutet.

Creutzburg
Senior Member
Beiträge: 425
Registriert: Do 1. Jan 1970, 02:00
Wohnort: Dresden
Kontaktdaten:

Re: Änderung multiobject auf Datenbank-Ebene

Beitragvon Creutzburg » Di 22. Nov 2011, 10:59

Und Du bist Dir sicher, dass Du wirklich alle relevanten Einträge in der tblTemporaryDoc gelöscht hast? Die ist eigentlich die typische Verdächtige in solchen Fällen. Zur Info: es kann mehr als einen Eintrag je Objekt in der tblTemporaryDoc geben.

Gruß,
Alex
http://www.xport.de – Internet-Agentur für Hotels
http://www.domainpreisvergleich.de – Domain-Preisvergleich inkl. Verfügbarkeits-Check – ist meine Wunschdomain noch frei, und wo registriere ich sie am günstigsten?

plan4
Member
Beiträge: 56
Registriert: Do 1. Jan 1970, 02:00
Wohnort: Bremen
Kontaktdaten:

Re: Änderung multiobject auf Datenbank-Ebene

Beitragvon plan4 » Di 22. Nov 2011, 11:07

Ich habe dort sogar alle Datensätze mit Wert tblObjectFiles in Spalte DocTable gelöscht.

mokraemer
Senior Member
Beiträge: 3619
Registriert: So 8. Aug 2010, 01:23
Wohnort: Mainz

Re: Änderung multiobject auf Datenbank-Ebene

Beitragvon mokraemer » Mi 23. Nov 2011, 02:17

@Creutzburg: gilt nur für we < 6.2.4 - die temporaryDoc hat seit der Zeit nur noch einen Eintrag pro Dokument/Objekt.

@plan4: es gibt zwei Möglichkeiten - da es derzeit keiner direkt weiß
1. du durchsuchst den Quelltext
2. du machst einen mysql_dump bevor du die Änderung in WE(!) machst und einen danach und gehst dann z.B. mit meld oder diff dran und suchst die Änderung raus.

Ich denke 2. geht schneller, das lesen und schreiben in der DB ist durch die Vererbung etwas schwer zu durchblicken.
webEdition-Kern-Entwickler

plan4
Member
Beiträge: 56
Registriert: Do 1. Jan 1970, 02:00
Wohnort: Bremen
Kontaktdaten:

Re: Änderung multiobject auf Datenbank-Ebene

Beitragvon plan4 » Mi 23. Nov 2011, 11:59

Die Idee mit dem mysql_dump hat mir letztlich auf die Sprünge geholfen.
Am Ende musste ich einen Fehler in einzelnen Serialisierungsstrings feststellen, den ich bei den ganzen anderen Widrigkeiten nicht entdeckt hatte.

Es genügen also offenbar doch folgende Maßnahmen:
a) Einfügen des korrekt serialisierten Arrays der einzelnen IDs
Beispiel:

Code: Alles auswählen

Array
(
    [class] => 1
    [max] => 0
    [objects] => Array
        (
            [0] => 4
            [1] => 14
        )

)
Ergibt per PHP serialisiert:

Code: Alles auswählen

a:3:{s:5:"class";s:1:"1";s:3:"max";i:0;s:7:"objects";a:2:{i:0;s:1:"4";i:1;s:2:"14";}}
b) Löschen der zugehörigen Einträge in tblTemporaryDoc, im Zweifel aller Datensätze mit Wert "tblObjectFiles" in Spalte DocTable

Vielen Dank für Eure Hilfe!
Gruß
Dietmar


Zurück zu „DB-/Objektmodul“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste