blackshirt
Goto Top

Fehler 1064 you have an error in SQL syntax datenbankabfrage, Search and Replace

hallo Zusammen,
ich komme einfach nicht weiter.
Zuerst das geständnis: ich habe so gut wie keine Ahnung von SQL-Datenbanken, es beschränkt sich darauf, sie zu importieren, notfalls auch zu exportieren, ich kann mich Einträge ansehen, ggf. etwas ändern, aber ich beherrsche keine Skriptabfragen, und genau das brauche ich jetzt.
Durch meine Dämlichkeit habe ich mir eine DB "zerschossen." Ich habe Wordpress lokal installiert und bearbeitet, danach sollte es online gehen.
Beim Exportieren habe ich jetzt falsche URLs in der DB, sodass die Seite natürlich nicht aufgerufen werden kann. Wie das gekommen ist, ist eine andere Geschichte...

Mein Problem:
Jetzt steht überall "http:http://www.neueurl.de; womit ein "http:" zuviel ist.
Mit einem Skript aus dem Netz wollte ich das jetzt per suchen und ersetzen wieder ausbügeln:

UPDATE wp_options SET option_value = replace(option_value, 'http://www.alteurl', 'http://www.neueurl') WHERE option_name = 'home' OR option_name = 'siteurl';

UPDATE wp_posts SET guid = replace(guid, 'http://www.alteurl','http://www.neueurl');

UPDATE wp_posts SET post_content = replace(post_content, 'http://www.alteurl', 'http://www.neueurl');

UPDATE wp_postmeta SET meta_value = replace(meta_value,'http://www.alteurl','http://www.neueurl');

UPDATE links SET href = REPLACE(href, 'http:http://www.alteurl';, 'http://www.neueurl');

Und nun bekomme ich die Fehlermeldungen:
#1064 - you have an error in SQL syntax

und im einzelnen:
eine neue Anweiung wurde gefunden aber kein Trennzeichen zwischen ihm und dem vorhergehenden (bei REPLACE)
unerwartetes Zeichen (bei option_value)
unerwartetes Zeichen (bei allen Urls, die ich angegebene habe)

Kann mir jemand helfen?
das wäre schön...

Content-Key: 324163

Url: https://administrator.de/contentid/324163

Printed on: April 19, 2024 at 02:04 o'clock

Member: em-pie
Solution em-pie Dec 18, 2016 updated at 10:15:05 (UTC)
Goto Top
Moin,

Auf anhieb erkenne ich bei dir keinen Fehler in der Syntax.
Ab dem zweiten Statement fällt mir aber auf, dass du keine Leerzeichen nach den Kommas innerhalb der REPLACE-Signatur verwendest. Manchmal habe ich hiermit auch schon Probleme gehabt (zwar auf einer DB2, aber wer weiss...)


Was aber auch noch ginge (sofern du überall die Url mit dem doppelten http: versehen hast):
Folgende Annahme: dein Feld, welches die URL beinhaltet heißt in meinem Beispiel "url_field":

Zunächst das erwartete Ergebnis begutachten:
select url_field, LEN(url_field), right(url_field, len(urlfield)-5) from table_x where my_option=value
Zu Erklärung:
du schaust dir nun das Feld url_field im Original an, dann schaust du, wie lang das Feld ist. Abschließend lässt du dir das Feld url_field mit allen Zeichen von Rechts anzeigen, reduziert um die 5 Zeichen "http:"

Wenn dein Ergebnis passt, wäre der nächste Schritt das Update:
update table_x Set url_field = right(url_field, len(urlfield)-5) where my_option=value 

Gruß
em-pie