Wenn eine SQL-Dump mit phpmyadmin Export schafft es die VIEW-Tabelle wie folgt aus:
Ich habe mit mysqldump
geprüft, die genau tut das gleiche. Sowohl mysqldump als auch PHPMyAdmin scheinen SHOW CREATE auszuführen, was dazu führt, dass in der create-Anweisung ein Sicherheitsdefinierer vorhanden ist. Ich sehe keinen Weg, "es auszuschalten".
Jedes Mal muss ich den SQL-Dump manuell bearbeiten, um den Root-Benutzer und den Datenbanknamen zu entfernen.
Hier kann ich aber helfen. Manuelles Bearbeiten einer SQL-Datei ist die Hölle und es ist zu fehleranfällig. Ich hatte diese Probleme zuvor, wo der exportierende Benutzer nicht auf der Plattform vorhanden war, die ich importieren wollte. Das einzige, was ich bearbeiten musste, war alles zwischen CREATE und VIEW.
Jetzt, da Sie Ihre Frage mit php
markiert haben, stelle ich mir vor, Sie wissen, wie man es von der Befehlszeile aus verwendet.Hier ist ein Skript, das alle nicht-notwendigen Werte mit einem leeren String ersetzt:
<?php
$string = 'CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER
VIEW `database`.`table` AS';
$string = preg_replace(
'/CREATE .*(TABLE|VIEW) `[^`]+`\.(`[^`]+`)/s',
'CREATE $1 $2',
$string
);
var_dump($string);
Vielleicht nicht eine direkte Antwort auf Ihre Frage, aber es sollten Sie vermeiden, dass manuell die Deponien bearbeiten.
Ist dies überhaupt möglich:
Sie auch mit
mysqldump
in einem einzigen Befehl, mit einem Rohr unter Verwendung können? Bin ich die einzige 1, die dieses Problem hat –Warum müssen Sie sie manuell entfernen? Führt es zu Problemen, wenn Sie versuchen, Ihre Daten in phpMyAdmin zu importieren? – Liyali
Ja, weil dieser Benutzer in der anderen Umgebung nicht existiert. Auch der Datenbankname ändert sich manchmal. Es scheint nur seltsam, wie alle anderen Tabellen ohne diese exportieren. –