Update Script PE 3.0.4.1 nach PE 4.0.0.0

Hallo nochmal, habe meinen Beitrag versehentlich ins engl. Forum gepostet. www.oxid-esales.com/de/resources/forum/installation-and-configuration/update-script-pe-3041-pe-4000 Wäre ja auch nicht schlimm wenn er auch in engl. gewesen wäre, sorry. Darum hier nochmal.

Hänge an folgendem Problem. Unser Shop läuft auf der Version PE 3.0.4.1. Nun haben wir eine Kopie in einer Testumgebung aufgebaut um unseren Shop eventuell auf PE 4.0.0.0 zu upgraden.
Wenn wir über phpmyadmin oder auch über die Konsole das update.sql ausführen, schlägt MYSQL auf folgenden Poller.MySQL meldet: Dokumentation
#1030 - Got error 139 from storage engine

Daraufhin habe ich das update script Blockweise ausgeführt um heraus zu finden wann er denn ein Problem hat.
An der Zeile 650### changing table types
ALTER TABLE oxarticles ENGINE = InnoDB;

bleibt er hängen. Alle anderen laufen sauber durch.
Keine Ahnung was für ein problem er hat? Habe auch schon ge-googelt, werde aber nicht schlau daraus.
Die einzige Vermutung die ich habe ist, die Tatsache das wir 10 Sprachen konfiguriert haben. Kann es sein das InnDB nur eine gewisse Anzahl an Spalten kann, oder so ähnlich.
Wäre toll wenn jemand einen Tip bzw. ne Lösung hätte.

Gruß
DerTom

Hab im engl. Forum gelöscht :wink:


Marco Steinhäuser
Community Operator
OXID eSales AG

Hallo Tom,

ich hab mich soeben auch mal hier durch gehangelt:
http://bugs.mysql.com/bug.php?id=10035

Deine Vermutung scheint nicht ganz falsch zu sein, dass es irgendwie doch auf die Größe ankommt. Eine Mögliche Lösung wird aufgezeigt:

Splitting the table into smaller ones is the way to solve this. It will also increase the portability to other database brands, since many brands have the maximum row length even smaller than 8000 bytes.

Gruß


Marco Steinhäuser
Community Operator
OXID eSales AG

Hallo Marco,

danke erstmal. Haben das Problem nun auch so erkannt.
Wenn ich z.B. OXLONGDESC_10 (Text) lösche oder leere laüft das update script durch. Das ist irgendeine Begrenzung von Anzahl der Spalte und der Größe.
Frage mich nur warum diese InnoDB Begrenzung not tut, an dieser Stelle. Und funktionieren muß es ja, schließlich gibt es ja diese Anleitung von Oxid:

<cite>Mehrere Sprachen
http://www.oxid-esales.com/de/resources/forum/administration/multi-sprachen

die Datenbank ist für eine dritte Sprache bereits vorbereitet, deshalb läßt sich die dritte Sprache relativ einfach installieren:

  1. Admin -> Grundeinstellungen -> Einstellungen -> Sprache
    xh => xhosa
  2. Kopiere /out/basic/en/ nach /out/basic/xh/
  3. Übersetze lang.php von Englisch nach Xhosa
  4. Fertig. Für mehr als drei Sprachen muss die Datenbank angefasst werden. In den Tabellen, bei denen Übersetzung notwendig ist (z.B. oxarticle), findet man Felder wie oxtitle (für die erste Sprache), oxtitle_1 (für die zweite) usw.</cite>
    Werde mal beim Oxid Support anklopfen. Mal schaun was die dazu sagen.

Danke und Gruß
DerTom

Hallo Tom,

das werden die Jungs auch nicht lösen können. Ich hab das Thema aus dem MySQL Bugtracker gefischt.
Und das Problem ist auch etwas anders geartet: Anlegen kannst Du Tabellen wahrscheinlich soviele wie Du willst. Die Portierung über einen Dump scheint die Schwierigkeit zu sein.

Gruß


Marco Steinhäuser
Community Operator
OXID eSales AG

Hallo Marco & Co wer lesen kann ist klar im Vorteil. Habe mir das Script nochmal genauer angesehen.

Zeile 213 # copying long descriptions #if you have more than 4 languages, please add additional fields here Zu beachten ist noch der Block davor

Zeile 199 ### oxartextends table So mal schnell gesagt, wird eine neue Tabelle oxartextends mit den Spalten OXLONGDESC und OXTAGS erstellt und die Daten aus diesen Spalten aus der oxarticles kopiert und in oxarticles gelöscht, damit diese wiederum nicht zu groß wird um sie per InnoDB laufen zu lassen. So sollte das dann z.B. ausschauen

<code> ### oxartextends table CREATE TABLE oxartextends ( OXID char(32) NOT NULL, OXLONGDESC text NOT NULL, OXLONGDESC_1 text NOT NULL, OXLONGDESC_2 text NOT NULL, OXLONGDESC_3 text NOT NULL, OXLONGDESC_4 text NOT NULL, OXLONGDESC_5 text NOT NULL, OXLONGDESC_6 text NOT NULL, OXLONGDESC_7 text NOT NULL, OXLONGDESC_8 text NOT NULL, OXLONGDESC_9 text NOT NULL, OXLONGDESC_10 text NOT NULL, OXTAGS varchar(255) NOT NULL, OXTAGS_1 varchar(255) NOT NULL, OXTAGS_2 varchar(255) NOT NULL, OXTAGS_3 varchar(255) NOT NULL, OXTAGS_4 varchar(255) NOT NULL, OXTAGS_5 varchar(255) NOT NULL, OXTAGS_6 varchar(255) NOT NULL, OXTAGS_7 varchar(255) NOT NULL, OXTAGS_8 varchar(255) NOT NULL, OXTAGS_9 varchar(255) NOT NULL, OXTAGS_10 varchar(255) NOT NULL, PRIMARY KEY (OXID) ) TYPE=MyISAM; # copying long descriptions #if you have more than 4 languages, please add additional fields here INSERT INTO oxartextends ( OXID, OXLONGDESC, OXLONGDESC_1, OXLONGDESC_2, OXLONGDESC_3, OXLONGDESC_4, OXLONGDESC_5, OXLONGDESC_6, OXLONGDESC_7, OXLONGDESC_8, OXLONGDESC_9, OXLONGDESC_10, OXTAGS, OXTAGS_1, OXTAGS_2, OXTAGS_3, OXTAGS_4, OXTAGS_5, OXTAGS_6, OXTAGS_7, OXTAGS_8, OXTAGS_9, OXTAGS_10) SELECT OXID, OXLONGDESC, OXLONGDESC_1, OXLONGDESC_2, OXLONGDESC_3, OXLONGDESC_4, OXLONGDESC_5, OXLONGDESC_6, OXLONGDESC_7, OXLONGDESC_8, OXLONGDESC_9, OXLONGDESC_10, OXSEARCHKEYS, OXSEARCHKEYS_1, OXSEARCHKEYS_2, OXSEARCHKEYS_3, OXSEARCHKEYS_4, OXSEARCHKEYS_5, OXSEARCHKEYS_6, OXSEARCHKEYS_7, OXSEARCHKEYS_8, OXSEARCHKEYS_9, OXSEARCHKEYS_10 FROM oxarticles; # dropping copied fields ALTER TABLE oxarticles DROP COLUMN OXLONGDESC; ALTER TABLE oxarticles DROP COLUMN OXLONGDESC_1; ALTER TABLE oxarticles DROP COLUMN OXLONGDESC_2; ALTER TABLE oxarticles DROP COLUMN OXLONGDESC_3; ALTER TABLE oxarticles DROP COLUMN OXLONGDESC_4; ALTER TABLE oxarticles DROP COLUMN OXLONGDESC_5; ALTER TABLE oxarticles DROP COLUMN OXLONGDESC_6; ALTER TABLE oxarticles DROP COLUMN OXLONGDESC_7; ALTER TABLE oxarticles DROP COLUMN OXLONGDESC_8; ALTER TABLE oxarticles DROP COLUMN OXLONGDESC_9; ALTER TABLE oxarticles DROP COLUMN OXLONGDESC_10; #adding fulltext index for tags ALTER TABLE oxartextends ADD FULLTEXT (OXTAGS); ALTER TABLE oxartextends ADD FULLTEXT (OXTAGS_1); ALTER TABLE oxartextends ADD FULLTEXT (OXTAGS_2); ALTER TABLE oxartextends ADD FULLTEXT (OXTAGS_3); ALTER TABLE oxartextends ADD FULLTEXT (OXTAGS_4); ALTER TABLE oxartextends ADD FULLTEXT (OXTAGS_5); ALTER TABLE oxartextends ADD FULLTEXT (OXTAGS_6); ALTER TABLE oxartextends ADD FULLTEXT (OXTAGS_7); ALTER TABLE oxartextends ADD FULLTEXT (OXTAGS_8); ALTER TABLE oxartextends ADD FULLTEXT (OXTAGS_9); ALTER TABLE oxartextends ADD FULLTEXT (OXTAGS_10); <code>

Ich hatte diesen Part ja erstmal ignoriert weil ich es ja erstmal so ausprobieren wollte. Nu denn, immer hin ein kleiner Teilerfolg, jetzt hänge ich nur noch an http://www.oxid-esales.com/de/resources/forum/installation-und-konfiguration/fehler-nach-update-auf-pe4000

Grüße DerTom

Nachtrag: Bin ich doof oder warum funktionieren die Formatierungen bei mir nicht ? <code>Banane</code>

Danke für’s Feedback!


Marco Steinhäuser
Community Operator
OXID eSales AG