Startseite
  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche
Startseite › Forum › Drupalcenter.de › Allgemeines zu Drupal ›

Reparaturskript für Portierung von MySQL 5.0 nach 4.0 läuft nicht

Eingetragen von feodor (25)
am 19.11.2006 - 19:18 Uhr in
  • Allgemeines zu Drupal

Wenn man auf MySQL mit Version größer 4.1 entwickelt hat und der Provider nur 4.0 bietet, läuft man in die auto_increment-Falle. Nach dem Upload fehlt bei allen Tabellen die auto_increment-Eigenschaft der Primärschlüssel. (Das sollte man in die FAQ aufnehmen, denn viele Provider haben noch MySQL keienr als 4.1)

Hier zu gibt es das Skript:

<?
$hostname = "localhost";
$username = "root";
$password = "";
$dbName = "yourlocalbd";
mysql_connect($hostname,$username,$password) or die("Can't create connection");
$res1 = mysql_query("SHOW TABLES FROM $dbName");
$i=0;
$fp = fopen ("ai_fix.sql", "w");
while($row1 = mysql_fetch_array($res1)){
$res2 = mysql_db_query($dbName, "SHOW CREATE TABLE $row1[0]");
while($row2 = mysql_fetch_array($res2)){
  preg_match("/\s*(\W\w+\W)(.*auto_increment)/", $row2[1], $matches);
  if($matches){
   $i++;
   $str = "ALTER TABLE ".$row2[0]." CHANGE ".$matches[1]."
          ".$matches[1]."".$matches[2].";\n";
   fwrite($fp, $str);
  }
}
mysql_free_result($res2);
}
fclose($fp);
mysql_free_result($res1);
mysql_close();
echo "Entries created: ".$i;
?>

Ich habe leider keine Erfarung mit PHP-Skripten, daher gibt es vielleicht eine einfache Antwort auf meine Frage. :-)

Oben muss man einige Angaben ändern, dann scheint das Skript die Datei "ai_fix.sql" zu erzeugen, die ein SQL-Skript enthält, das die Tabellen mittels "ALTER-TABLE"-Befehlen repariert, d.h. bei den Schlüsseln die auto_increment-Eigenschaft setzt. "ai_fix.sql" muss man dann wohl über phpmyadmin ausführen.

Problem: Ich erhalte die Fehlermeldung:

fopen(ai_fix.sql): failed to open stream: Permission denied

Offenbar reichen die Rechte zum Erzeugen der Datei nicht aus. Ich vermute, dass das Skript die Datei in das Verzeichnis, in dem es selbst steht, schreiben will. Über FTP sehe ich, dass die Rechte als

drwxr-xr-x

gesetzt sind. Wieso funtioniert das nicht? Läuft das Skript mit anderen Rechten? Ist der Besitzer des Skripts ein anderer User?

Fragen über Fragen,ich habe natürlich keinen Shell-Zugriff.

Farewell
Feodor

‹ Komischer Fehler auf die Datenbank Weiterleitungsdomain wird Hauptdomain ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

Es lag an der Rechten aber das Skript funtioniert nicht

Eingetragen von feodor (25)
am 20.11.2006 - 13:15 Uhr

Hallo nochmal,

dass die Datei nicht zum Schreiben geöffnet weren konnte, lag an den Rechten, da das Skript nicht im Userkontext ausgeführt wird.

Das zugrundeliegende AUTO_INCREMENT-Problem ist auf Drupal.org diskutiert. Dort findet man auch die Quelle des Skripts.

Allerdings: Das Skript funktioniert bei mir nicht, obwohl es auf drupal.org eine positive Rückmeldung gab. Der Zugriff auf die Datenbank klappt, aber es werden keine SQL-Dateizeilen erzeugt. Debuggen ist äußerst mühsam, da ich multiple Skripte mit verschiedenen echo-Anweisungen hochladen und dabei immer die Rechte über ein Webinterface ändern muss. Ich werde darüber berichten.

Farewell
Feodor

  • Anmelden oder Registrieren um Kommentare zu schreiben

Skript muss mindestens auf MySQL 4.1 laufen

Eingetragen von feodor (25)
am 20.11.2006 - 16:49 Uhr

Das Skript muss auf dem MySQL-Server mit der höheren Versionsnummer laufen. Man kommt drauf, wenn man den regulären Ausdruck in dem preg_match-Funktionsaufruf analysiert: Der Eintrag auto_increment, nach dem gesucht wird, kann nur von MySql >= 4.1 erzeugt werden.

Es läuft also so:

  • Ausgangssituation ist, dass man den "drupal content" von einem neuen MySQL auf MySQL 4.0 herunter portieren muss, da der Provider nichts neues hat.
  • Folge: Es können keine Datenbank-Einträge mehr wegen dem fehlenden AUTO_INDENT erzeugt werden, was sich so äußerst, dass beim Versuch sich anzumelden, lediglich die Fehlefmeldung "Duplicate ID" herausgeschrieben wird. Man kann also mit der Seite nicht mehr arbeiten.
  • Unter dem lokalen Entwicklungsserver, der mit der zu hohen MySQL-Version läuft, lässt man nun das obige PHP-Skript laufen.
  • Hierzu den obigen Code in eine Datei mit der Endung php ins Drupal-Verzeichnis speichern.
  • Das Skript ausführen, indem man im Browser http://localhost/SkriptFileName.php angibt. Das bewirkt, dass im Druplaverzeichnis die Datei ai_fix.sql entsteht.
  • Auf dem Host des Providers mit der zu alten MySQL Version 4.0 PhpMyAdmin aufrufen, die Datenbank auswählen, SQL wählen und dort die lokale Datei ai_fix.sql angeben und die Befehle mittels ok ausführen.
  • Danach sind alle AUTO_INCREMENT-Eigenschaften in den Tabellen gesetzt und alles sollte wieder funktionieren.
  • Ob es geklappt hat sieht man unter phpMyAdmin: Die AUTO_INDENT-Eigenschaften für die Primärschlüssel sollten wieder da sein.

Leider fehlte in der Veröffentlichungsstllen jeglicher Kommentar, so dass man das Skript lesen können muss, um es anzuwenden.

Farewell
http://feodor.de

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • für drupal11 ein Slider Modul
  • [gelöst] W3CSS Paragraphs Views
  • Drupal 11 neu aufsetzen und Bereiche aus 10 importieren
  • Wie erlaubt man neuen Benutzern auf die Resetseite zugreifen zu dürfen.
  • [gelöst] Anzeigeformat Text mit Bild in einem Artikel, Drupal 11
  • Social Media Buttons um Insteragram erweitern
  • Nach Installation der neuesten D10-Version kein Zugriff auf Website
  • Composer nach Umzug
  • [gelöst] Taxonomie Begriffe zeigt nicht alle Nodes an
  • Drupal 11 + Experience Builder (Canvas) + Layout Builder
  • Welche KI verwendet ihr?
  • Update Manger läst sich nicht Installieren
Weiter

Neue Kommentare

  • melde mich mal wieder, da ich
    vor 2 Wochen 1 Tag
  • Hey danke
    vor 2 Wochen 1 Tag
  • Update: jetzt gibt's ein
    vor 2 Wochen 2 Tagen
  • Hallo, im Prinzip habe ich
    vor 3 Wochen 1 Stunde
  • Da scheint die Terminologie
    vor 3 Wochen 4 Stunden
  • Kannst doch auch alles direkt
    vor 3 Wochen 4 Tagen
  • In der entsprechenden View
    vor 3 Wochen 4 Tagen
  • Dazu müsstest Du vermutlich
    vor 3 Wochen 4 Tagen
  • gelöst
    vor 6 Wochen 23 Stunden
  • Ja natürlich. Dass ist etwas,
    vor 6 Wochen 1 Tag

Statistik

Beiträge im Forum: 250233
Registrierte User: 20453

Neue User:

  • ByteScrapers
  • Mroppoofpaync
  • 4aficiona2

» Alle User anzeigen

User nach Punkten sortiert:
wla9461
stBorchert6003
quiptime4972
Tobias Bähr4019
bv3924
ronald3857
md3717
Thoor3678
Alexander Langer3416
Exterior2903
» User nach Punkten
Zur Zeit sind 0 User und 24 Gäste online.

Hauptmenü

  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche

Quicklinks I

  • Infos
  • Drupal Showcase
  • Installation
  • Update
  • Forum
  • Team
  • Verhaltensregeln

Quicklinks II

  • Drupal Jobs
  • FAQ
  • Drupal-Kochbuch
  • Best Practice - Drupal Sites - Guidelines
  • Drupal How To's

Quicklinks III

  • Tipps & Tricks
  • Drupal Theme System
  • Theme Handbuch
  • Leitfaden zur Entwicklung von Modulen

RSS & Twitter

  • Drupal Planet deutsch
  • RSS Feed News
  • RSS Feed Planet
  • Twitter Drupalcenter
Drupalcenter Team | Impressum & Datenschutz | Kontakt
Angetrieben von Drupal | Drupal is a registered trademark of Dries Buytaert.
Drupal Initiative - Drupal Association