phpMyAdmin:nur nicht bereits exist. Datensätze importieren?

Probleme bei der regulären Arbeiten mit phpBB, Fragen zu Vorgehensweisen oder Funktionsweise sowie sonstige Fragen zu phpBB im Allgemeinen.
Forumsregeln
phpBB 2.0 hat das Ende seiner Lebenszeit überschritten
phpBB 2.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 2.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf phpBB 3.1, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Antworten
testit
Mitglied
Beiträge: 234
Registriert: 04.06.2001 02:00

phpMyAdmin:nur nicht bereits exist. Datensätze importieren?

Beitrag von testit »

Hallo,

viele von Euch arbeiten sicher ebenfalls mit phpMyAdmin.

Folgende Frage:

Ich will eine Tabelle - bspw. Topics - aus einer DB A exportieren und anschliessend in einer anderen DB B importieren. Allerdings sollen dann in der DB B nur diejenigen Datensätze eingefügt werden, die in DB B noch nicht existieren.

Wenn ich zuvor beim Exportieren NICHT "Fehlerübergehenden INSERT-Befehl verwenden" markiert habe, wir ja bereits beim ersten in DB B importierten Datensatz angemeckert, dass dieser bereits existiert und der weitere Importvorgang abgebrochen. Leider nutzt es nichts, wenn ich beim Exportieren "Fehlerübergehenden INSERT-Befehl verwenden" aktiviere, weil dann sämtliche Datensätze in DB B eingefügt werden, selbst wenn diese dort schon existieren.

Gibt es da irgendeinen Trick mit phpMyAdmin? Oder lässt sich so etwas mit phpMyAdmin nicht realisieren?

Danke und Gruss
testit
Benutzeravatar
Miriam
Mitglied
Beiträge: 12310
Registriert: 13.10.2004 07:18
Kontaktdaten:

Beitrag von Miriam »

Wenn du die SQL Abfragen (mit phpBB_-Präfix) hast, würde ich Dir den DB-Update-Generator empfehlen.
Da wird jede Query ausgeführt und die INSERTS, die nicht klappen, geben einen Fehler. Die anderen werden eingefügt.

Ansonsten musst Du ein extra Script schreiben, dass in der DB prüft, ob der Eintrag schon da ist.
Gruss, Miriam.
Ich schmeiß' alles hin und...
... lasse es liegen
testit
Mitglied
Beiträge: 234
Registriert: 04.06.2001 02:00

Beitrag von testit »

Hallo,

vielen Dank fuer den Hinweis auf dieses Script.

Allerdings funktioniert es bei mir vom ACP aus nicht, sondern nur, wenn ich es "normal" im phpBB-root-Verzeichnis aufrufe.

Das entstehende db_update.php mit den SQL-Befehlen etc. habe ich anschliessend in das phpBB-root-Verzeichnis hinein kopiert und als Admin eingeloggt aufgerufen.

Ergebnis: Leerer Bildschirm, das Programm legt offenbar nicht mal los mit dem Updaten, obwohl meiner Meinung nach im db_update.php alles stimmt:

Code: Alles auswählen

define('IN_PHPBB', true);
$phpbb_root_path = './';
include($phpbb_root_path . 'extension.inc');
include($phpbb_root_path . 'common.'.$phpEx);

//
// Start session management
//
$userdata = session_pagestart($user_ip, PAGE_INDEX);
init_userprefs($userdata);
//
// End session management
//


if( !$userdata['session_logged_in'] )
{
	$header_location = ( @preg_match('/Microsoft|WebSTAR|Xitami/', getenv('SERVER_SOFTWARE')) ) ? 'Refresh: 0; URL=' : 'Location: ';
	header($header_location . append_sid("login.$phpEx?redirect=db_update.$phpEx", true));
	exit;
}

if( $userdata['user_level'] != ADMIN )
{
	message_die(GENERAL_MESSAGE, 'You are not authorised to access this page');
}

$page_title = 'Updating the database';
include($phpbb_root_path . 'includes/page_header.'.$phpEx);
...
Gruss
testit
Benutzeravatar
Mahony
Ehemaliges Teammitglied
Beiträge: 12327
Registriert: 17.11.2005 22:33
Wohnort: Ostfildern Kemnat
Kontaktdaten:

Beitrag von Mahony »

Hallo
Ändere mal das hier

Code: Alles auswählen

define('IN_PHPBB', true);
$phpbb_root_path = './';
include($phpbb_root_path . 'extension.inc');
include($phpbb_root_path . 'common.'.$phpEx);
in das hier

Code: Alles auswählen

define('IN_PHPBB', true);
$phpbb_root_path = './';
include_once($phpbb_root_path . 'extension.inc');
include_once($phpbb_root_path . 'common.'.$phpEx);
und versuchs dann nochmal.




Grüße: Mahony
Wer fragt, ist ein Narr für fünf Minuten, wer nicht fragt, ist ein Narr für immer.
Benutzeravatar
Miriam
Mitglied
Beiträge: 12310
Registriert: 13.10.2004 07:18
Kontaktdaten:

Beitrag von Miriam »

Ja, es ist ein eigenständiges Updatescript. Muss also direkt in der URL aufgerufen werden.

Hast Du denn versucht, es mit ein paar Befehlen zu starten, ob es überhaupt läuft?

Es kann sein, dass der Speicher nicht reicht, weil alles in ein Array geladen wird. Aber der Server keine Fehlermeldung ausgibt bzgl. des Speichers.
Gruss, Miriam.
Ich schmeiß' alles hin und...
... lasse es liegen
testit
Mitglied
Beiträge: 234
Registriert: 04.06.2001 02:00

Beitrag von testit »

Hallo,

danke fuer Eure Tipps, aber es lag an etwas anderem:

Das Script liest aus der Topics-Tabelle die Titel aus, die teilweise auch Anführungszeichen enthalten, wenn die user diese im Titel verwendet hatten (sowohl " als auch ").

Der erzeugte db_update.php-Code escaped die QUOTES nicht, sondern übergibt die " direkt in die upzudatende Datenbank, die dann meckert.

db_generator.php sollte man folglich noch ein wenig überarbeiten, wenn man damit öfters arbeiten möchte.

Nette Grüsse
testit
Antworten

Zurück zu „phpBB 2.0: Administration, Benutzung und Betrieb“