PHP Datei bearbeiten

Andi'

Mitglied
Thread Starter
Mitglied seit
29.07.2015
Beiträge
307
Hallo zusammen,

ich hoffe von euch kann mir bei diesem etwas speziellem Thema weiter helfen.

Ich habe eine SQL Datei, darin muss ich Anweisungen mit dem Namen "CREATE" löschen. Das wäre ja jetzt nicht so kompliziert, aber mit der Suchen & Ersetzen Funktion ersetzt es mir nur das "CREATE", es müsste aber die komplette Anweisung gelöscht werden.
Bei dem Eintrag CREATE werden etwa 500 Ergebnisse gefunden, weshalb es schön wäre wenn es eine automatisierte Lösung gibt.
Kann mir hier jemand von euch weiter helfen?
Ich habe "TextMate" ausprobiert, hier werden mir zwar die kompletten Anweisungen angezeigt, ich kann sie aber nicht löschen.

Grüße
Andi
 
Zuletzt bearbeitet:

wegus

Aktives Mitglied
Mitglied seit
13.09.2004
Beiträge
17.201
darin muss ich Anweisungen mit dem Namen "CREATE" löschen
Kannst Du das mal ein bisschen präzisieren? Das klingt als enthalte die PHP Datei SQL Code!


BTW: falsches Forum! Für PHP und Web-Programmierung gibt es ein eigens Forum hier!
 

Andi'

Mitglied
Thread Starter
Mitglied seit
29.07.2015
Beiträge
307
Hallo wegus,

entschuldige bitte. Ich meinte eine SQL Datei.

Als Beispiel:

Dieser Code ist in der Datei drin:
CREATE TABLE `ps_authorization_role` (
`id_authorization_role` int(10) UNSIGNED NOT NULL,
`slug` varchar(255) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Wenn ich jetzt nach "CREATE" suche werden mir diese Sachen angezeigt.
Aber ich muss aus der Datei die kompletten Anweisungen raus löschen. Also nicht nur "CREATE", sondern:
"CREATE TABLE `ps_authorization_role` (
`id_authorization_role` int(10) UNSIGNED NOT NULL,
`slug` varchar(255) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;"

Es sind lauter verschiedene Anweisungen, weshalb ich nur nach "CREATE" suchen kann.
Gibt es hierfür eine einfache Möglichkeit das zu tun? Denn ansonsten müsste ich jeden dieser Einträge (über 500) per Hand raus löschen.

Edit:
Entschuldige bitte, ich dachte ich würde im richtigen Teil des Forums schreiben. Denn bei "MacUser TechBar" steht darunter "allgemeine technische Fragen".
Kann das bitte jemand in einen passenderen Teil des Forums verschieben?
 

wegus

Aktives Mitglied
Mitglied seit
13.09.2004
Beiträge
17.201
Das wird etwas komplizierter, weil die Anweisungen über mehrere Zeilen gehen. Letztlich enden sie auf ein Semikolon, aber trotzdem denke ich das REGEX hier nicht zum Ziel führen.
InnoDB weist ja darauf hin, dass es MySQL ist und da lassen sich auch Backup ohne Create-Anweisungen erzeugen. Ggf ist es einfacher ein neues Backup mit dieser Anweisung zu erstellen:

mysqldump -u [user] -p[pass] -D[database] --no-create-info mydb > meinbackup.sql

Da fehlen dann die ganzen CREATE Anweisungen. Solltest Du PHPMyAdmin hierfür einsetzen, da kann man die CREATE Anweisungen auch mit einem Häkchen ausblenden bei der Backup-Erstellung.
 

warnochfrei

Aktives Mitglied
Mitglied seit
02.03.2019
Beiträge
1.400
Doch, können sie (in Strings). Was lösbar ist (mit Regex).
 

Andi'

Mitglied
Thread Starter
Mitglied seit
29.07.2015
Beiträge
307
Also irgendwie komme ich hier nicht weiter.
Ich wenn die Datenbank über phpMyAdmin (Ionos) importieren möchte bekomme ich folgende Fehlermeldung.

#1146 - Tabelle 'dbs123456.ps_access' existiert nicht

Kann mir von euch jemand weiter helfen?
 

warnochfrei

Aktives Mitglied
Mitglied seit
02.03.2019
Beiträge
1.400
Dann hast du eine Tabelle nicht hinzugefügt. Genaueres können wir dir nur anhand der Codeschnipsel nicht sagen.
 

Andi'

Mitglied
Thread Starter
Mitglied seit
29.07.2015
Beiträge
307
Das ist die komplette Ausgabe, hilft das vielleicht etwas mehr?

SQL-Befehl:



--
-- Daten für Tabelle `ps_access`
--

Code:
INSERT INTO `ps_access` (`id_profile`, `id_authorization_role`) VALUES
(1, 1),
(1, 2),
(1, 3),
(1, 4),
(1, 5),
(1, 6),
(1, 7),
(1, 8),
(1, 9),
(1, 10),
(1, 11),
(1, 12),
(1, 13),
(1, 14),
(1, 15),
(1, 16),
(1, 17),
(1, 18),
(1, 19),
(1, 20),
(1, 21),
(1, 22),
(1, 23),
(1, 24),
(1, 25),
(1, 26),
(1, 27),
(1, 28),
(1, 29),
(1, 30),
(1, 31),
(1, 32),
(1, 33),
(1, 34),
(1, 35),
(1, 36),
(1, 37),
(1, 38),
(1, 39),
(1, 40),
(1, 41),
(1, 42),
(1, 43),
(1, 44),
(1, 45),
(1, 46),
(1, 47),
(1, 48),
(1, 49),
(1, 50),
(1, 51),
(1, 52),
(1, 53),
(1, 54),
(1, 55),
(1, 56),
(1, 57),
(1, 58),
(1, 59),
(1, 60),
(1, 61),
(1, 62),
(1, 63),
(1, 64),
(1, 65),
(1, 66),
(1, 67),
(1, 68),
(1, 69),
(1, 70),
(1, 71),
(1, 72),
(1, 73),
(1, 74),
(1, 75),
(1, 76),
(1, 77),
(1, 78),
(1, 79),
(1, 80),
(1, 81),
(1, 82),
(1, 83),
(1, 84),
(1, 85),
(1, 86),
(1, 87),
(1, 88),
(1, 89),
(1, 90),
(1, 91),
(1, 92),
(1, 93),
(1, 94),
(1, 95),
(1, 96),
(1, 97),
(1, 98),
(1, 99),
(1, 10[...]
MySQL meldet: Dokumentation

#1146 - Tabelle 'dbs123456.ps_access' existiert nicht
 
Zuletzt bearbeitet von einem Moderator:

Andi'

Mitglied
Thread Starter
Mitglied seit
29.07.2015
Beiträge
307
Also die Datenbanktabelle ist angelegt.
Muss ich da vielleicht noch etwas bestimmtes in die Datei die ich importieren möchte eintragen?
 

xentric

Aktives Mitglied
Mitglied seit
11.05.2007
Beiträge
4.151
Also die Datenbanktabelle ist angelegt.
Muss ich da vielleicht noch etwas bestimmtes in die Datei die ich importieren möchte eintragen?
#1146 - Tabelle 'dbs123456.ps_access' existiert nicht
Sag ich doch. Da fehlt die Tabelle.
Würde ich auch sagen. Die Fehlermeldung ist doch glasklar "Tabelle existiert nicht". Und wenn du immer nur halbe Schnipsel postet kann Dir auch niemand helfen!

Wenn du zu deiner Ursprungsfrage -- dem CREATE entfernen -- gezeigt hättest wie sie in der Datei aussehen hätte dir sicher auch jemand ein RegEx dafür gemacht. Aber wie gesagt. Mit halben Fehlermeldungen oder Skripts kann man keine vollständige oder gar richtige Hilfe erwarten.
 
  • Gefällt mir
Reaktionen: wegus

Andi'

Mitglied
Thread Starter
Mitglied seit
29.07.2015
Beiträge
307
Die SQL Datei ist 637747 Zeilen lang, das kann ich hier doch nicht alles posten?
Was würdet ihr denn benötigen damit ihr mir weiter helfen könntet?

Wegen den CREATE habe ich den Ratschlag von wegus beherzigt, das hat auch super funktioniert - danke dafür.
 
  • Gefällt mir
Reaktionen: wegus

xentric

Aktives Mitglied
Mitglied seit
11.05.2007
Beiträge
4.151
* Also importierst du jetzt über mysql (dem command line tool) den mysql dump von oben?
* Wie hast du die Datenbank dann angelegt, wenn du beim export --no-create-info genutzt hast?
* Hast du (als User) zum import/insert die passenden Rechte in der neuen Datenbank?
* Hast du von dem alten System per cp/rsync/etc. aus /var/lib/mysql/ Sachen rüberkopiert?


Erzähl halt einfach was du genau gemacht hast. Ansonsten kannst du auch einfach mal nach dem Fehler googlen. Datenbank export/import dump/restore ist jetzt nicht sooo ungewöhnlich.
 

Andi'

Mitglied
Thread Starter
Mitglied seit
29.07.2015
Beiträge
307
Es tut mir leid wenn es für euch etwas unbeholfen wirkt, aber das bin ich. Ich kenne mich mit dem Thema leider nicht sonderlich gut aus.

Mal ganz von vorne:

Ich habe bei Ionos Webspace angemietet und darauf einen Onlineshop mit PrestaShop installiert (von Strato umgezogen), dabei hat sich raus gestellt dass ein eigener Server besser ist.
Jetzt wollte ich vom Webspace zum Server wechseln.
Dafür habe ich mir eine Anleitung durchgelesen, in dieser wurde geschrieben dass eine neue Datenbank erstellt werden soll, aber man alle Tabellen aus dieser Datenbank löschen soll.

Dann habe ich die Datenbank vom Webspace exportiert und wollte sie bei dem neuen Server hochladen.
Dabei habe ich dann die Fehlermeldung "#1044 - Benutzer 'dbo987654321'@'%' hat keine Zugriffsberechtigung für Datenbank 'dbs123456'" bekommen. Der Support von Ionos hat mich dann auf eine Hilfeseite weitergeleitet (ich weiß nicht ob ich die hier posten darf, deshalb lasse ich das mal). Dort wird geschrieben:
1. Bearbeiten Sie die MySQL-Datei mit einem Texteditor.
2. Durchsuchen Sie die MySQL-Datei nach Zeilen, die mit CREATE oder USE beginnen.
Hinweis: Die Befehle CREATE und USE können im Shared Hosting nicht durch den MySQL-Server verarbeitet werden, da Kunden hierauf keinen administrativen Zugriff haben; daher bricht der Import mit dem Fehler 1044 ab.
3. Löschen Sie alle Anweisungen, die mit CREATE oder USE beginnen. Achten Sie beim Löschen ganzer Zeilen bitte darauf, dass Sie nicht versehentlich weitere Anwendungen mit entfernen.
4. Speichern Sie Ihre Änderungen und wiederholen Sie den Import in phpMyAdmin.

Deshalb habe ich gefragt wie man schnell alle CREATE Anweisungen löschen kann.

Dann habe ich eine Datei ohne die CREATE Anweisungen exportiert, wollte sie beim neuen Server importieren und funktionierte aber trotzdem nicht.

Und jetzt kommt das gravierendste:
Ich habe in phpMyAdmin die Datenbank vom Webspace mit der vom neuen Server verwechselt. Ich (Depp) habe nun in phpMyAdmin den Inhalt der Datenbank vom Webspace (also von meinem aktiven Onlineshop) gelöscht.
Ich war etwas im Stress und da ist es dann passiert. Soll jetzt keine Ausrede sein, ich könnte mich so über mich selbst ärgern.

Was ich mir gedacht habe, wenn ich alle Tabellen in der Datenbank gelöscht habe müssen sie doch erst wieder erstellt werden, damit die Datenbank weiß wo was hin muss oder?
Ich kenne mich nicht wirklich aus, aber das war gerade eben ein Gedanke von mir.
Wenn das stimmt, bekomme ich die CREATE und USE Befehle irgendwie einfach wieder in die SQL Datei rein?
Oder was kann ich denn machen?
Wie geschrieben, ich habe die SQL Datei des Onlineshops, aber eben ohne CREATE und USE Befehle.
 

warnochfrei

Aktives Mitglied
Mitglied seit
02.03.2019
Beiträge
1.400
Hinweis: Die Befehle CREATE und USE können im Shared Hosting nicht durch den MySQL-Server verarbeitet werden, da Kunden hierauf keinen administrativen Zugriff haben; daher bricht der Import mit dem Fehler 1044 ab.
Die Anweisung ist Unsinn. CREATE DATABASE wirst du nicht machen können. CREATE TABLE brauchst du aber.
 
  • Gefällt mir
Reaktionen: wegus

Andi'

Mitglied
Thread Starter
Mitglied seit
29.07.2015
Beiträge
307
Ok danke für diesen Hinweis.

Gibt es denn irgendeine Möglichkeit wie ich die SQL Datei noch manuell reparieren kann? Oder am Besten ein Programm die das wieder hinbiegt?
 
Oben