MySQL Mass edit vraagje 8)7

Pagina: 1
Acties:
  • 478 views

Acties:
  • 0 Henk 'm!

  • Frustus Maximus
  • Registratie: Oktober 2012
  • Laatst online: 05-09-2017
Beste,

Ik heb een testsite bij byte.nl maar die is sinds kort live gegaan. Echter in mijn database staat nog heel vaak (3000+) keer het ouder byte.nl adres. Dus dit: mijnwebsite.nl.testbyte.nl/wp-admin/etc

Nu wil ik graag overal ".testbyte.nl/" vervangen voor "/"

Deze code heb ik gebruikt, maar dat werkt niet:

UPDATE leads
SET status = "/"
WHERE status = ".testbyte.nl/"

Deze foutmelding krijg ik:
#1146 - Table 'db_mywebsite9349.leads' doesn't exist

Weet iemand wat ik moet doen om deze code wel te laten werken?

Alvast bedankt,

Frustus Maximus

[ Voor 7% gewijzigd door Frustus Maximus op 12-05-2016 15:49 ]


Acties:
  • 0 Henk 'm!

  • Afvalzak
  • Registratie: Oktober 2008
  • Laatst online: 31-08 12:02

Afvalzak

Zet jij mij even buiten?

Heet je tabel wel leads of is het misschien met een hoofdletter?
Zit je wel in de goede database te werken als je deze query uitvoert?

Probeer eens
MySQL:
1
select * FROM leads;
werkt dat wel?

[ Voor 24% gewijzigd door Afvalzak op 12-05-2016 15:51 ]

Last.fm | Code Talks


Acties:
  • 0 Henk 'm!

  • Fresh
  • Registratie: September 2011
  • Laatst online: 10-10 16:48

Fresh

nee is nee

Aan de foutmelding te zien vermoed ik dat je de tabelnaam niet goed hebt geschreven.

Probeer anders even met SHOW TABLES je gewenste tabelnaam te checken.

EDIT:
Ik denk niet dat het om een bug gaat maar toch wel een noemenswaardig om hier neer te zetten.

Op stackoverflow had iemand ook een soortgelijk probleem:
http://stackoverflow.com/...le-xxx-xxxxx-doesnt-exist

[ Voor 43% gewijzigd door Fresh op 12-05-2016 15:58 ]


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Die update gaat sowieso nooit werken... Je where clause gaat niet matchen en als 'ie matched zet je de status op "/" ipv "/wp-admin/...". Dus wees maar blij dat er een fout in je tabelnaam zit (verkeerd default database geselecteerd vermoed ik?).

Je where zal een status like '%.testbyte.nl/%'-achtig iets moeten worden en je set zal een replace(`status`, '.testbyte.nl/', '/') moeten bevatten.

[ Voor 56% gewijzigd door RobIII op 12-05-2016 16:00 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • Rannasha
  • Registratie: Januari 2002
  • Laatst online: 11-10 20:26

Rannasha

Does not compute.

RobIII schreef op donderdag 12 mei 2016 @ 15:56:
Die update gaat sowieso nooit werken... Je where clause gaat niet matchen en als 'ie matched zet je de status op "/" ipv "/wp-admin/..."
Dit dus.

Je zult de REPLACE functie moeten gebruiken om een deel van een tekenreeks te vervangen.

Maar dat is onafhankelijk van je huidige probleem waarin de tabel simpelweg niet gevonden wordt.

[ Voor 12% gewijzigd door Rannasha op 12-05-2016 16:00 ]

|| Vierkant voor Wiskunde ||


Acties:
  • 0 Henk 'm!

  • Afvalzak
  • Registratie: Oktober 2008
  • Laatst online: 31-08 12:02

Afvalzak

Zet jij mij even buiten?

RobIII schreef op donderdag 12 mei 2016 @ 15:56:
Die update gaat sowieso nooit werken... Je where clause gaat niet matchen en als 'ie matched zet je de status op "/" ipv "/wp-admin/...". Dus wees maar blij dat er een fout in je tabelnaam zit (verkeerd default database geselecteerd vermoed ik?).

Je where zal een like '%...%'-achtig iets moeten worden en je set zal een replace(...) moeten bevatten.
Als je REPLACE gebruikt hoef je in dit geval ook die like niet meer te gebruiken. ;)
Is wel veiliger natuurlijker.
code:
1
UPDATE leads SET url = REPLACE(url, '.testbyte.nl/', '/')

Last.fm | Code Talks


Acties:
  • 0 Henk 'm!

  • Frustus Maximus
  • Registratie: Oktober 2012
  • Laatst online: 05-09-2017
Bedankt voor de snelle reacties
Ik probeer nu om iedere tabel apart te nemen:

UPDATE wp_options
SET status = '/'
WHERE status = '%.testbyte.nl/%'

Maar dan zegt hij:
#1054 - Unknown column 'status' in 'where clause'

Dit heb ik ook geprobeerd:
UPDATE wp_options SET url = REPLACE(url, '.testbyte.nl/', '/')

Maar dan krijg ik ook een foutmelding: #1054 - Unknown column 'url' in 'field list'

[ Voor 28% gewijzigd door Frustus Maximus op 12-05-2016 16:07 ]


Acties:
  • 0 Henk 'm!

  • kenneth
  • Registratie: September 2001
  • Niet online

kenneth

achter de duinen

Frustus Maximus schreef op donderdag 12 mei 2016 @ 16:05:
Maar dan krijg ik ook een foutmelding: #1054 - Unknown column 'url' in 'field list'
Wat denk je dat die foutmelding betekent?

Look, runners deal in discomfort. After you get past a certain point, that’s all there really is. There is no finesse here.


Acties:
  • 0 Henk 'm!

  • Frustus Maximus
  • Registratie: Oktober 2012
  • Laatst online: 05-09-2017
UPDATE wp_options
REPLACE status = "/"
WHERE status like = "%.testbyte.nl/%"

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'REPLACE status = "/" WHERE status like = "%.testbyte.nl/%"' at line 2

Acties:
  • 0 Henk 'm!

  • Afvalzak
  • Registratie: Oktober 2008
  • Laatst online: 31-08 12:02

Afvalzak

Zet jij mij even buiten?

Mag ik je de tip geven om gewoon dit artikel te volgen:
https://codex.wordpress.o...Your_Domain_Name_and_URLs

En dan met name deze tool:
https://interconnectit.co...-for-wordpress-databases/

[ Voor 28% gewijzigd door Afvalzak op 12-05-2016 16:12 ]

Last.fm | Code Talks


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Sorry, maar ga gewoon even begrijpend lezen. Je dumpt hier foutmelding na superduidelijke foutmelding. Dat een kolom niet bestaat lijkt me een heel goed te begrijpen melding waar je prima ook zelf op kan acteren. Hetzelfde geldt voor die syntaxfout in je laatste post. RobIII en Afvalzak noemen hierboven nota bene precies het commando dat je moet gebruiken en nog gebruik je niet de stringfunctie maar het commando REPLACE dat iets heel anders doet.

Hou even op met gewoon maar wat doen. Hou even op met domweg elke foutmelding hier dumpen. Ga voor de grap eens lezen hoe je de functionaliteit die je nodig hebt moet gebruiken in plaats van je livedatabase potentieel om zeep te helpen omdat je blind willekeurige commando's uitvoert.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 11-10 14:13

Creepy

Tactical Espionage Splatterer

Sorry, maar dit soort foutmeldingen mag je toch eerst zelf proberen op te lossen i.p.v. hier direct te dumpen zonder verder te laten zien wat je nu zelf hebt gedaan. We zijn hier geen persoonlijke helpdesk.

"Unknown column..." betekent letterlijk dat, URL is blijkbaar geen kolom in je tabel. En dubbelcheck ook je laatste query, want "status like = ..." daar klopt echt helemaal niks van. Hoe een UPDATE werkt in MySQL is gelukkig goed bechreven in de online handleiding en met google snel te vinden ;)

* Creepy mept NMe.....

[ Voor 4% gewijzigd door Creepy op 12-05-2016 16:18 ]

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Afvalzak schreef op donderdag 12 mei 2016 @ 16:01:
Als je REPLACE gebruikt hoef je in dit geval ook die like niet meer te gebruiken. ;)
Euh, nou ja, het is-en-blijft MySQL en die zal anders voor élk record (AFAIK) de replace invoken (die dan weer een ongewijzigd result geeft weliswaar), maar die 'bespaar' je jezelf natuurlijk als je dat alleen maar doet op records waar die tekst überhaupt in voor komt. Als maar 1% van de records in een tabel met miljoenen records die tekst bevat scheelt dat 999.000 invokes van de REPLACE functie die vervolgens (weer) op zoek gaat naar een match in de tekst om er dan achter te komen dat er niets te vervangen is.

Having said that; het gaat hier zeer waarschijnlijk maar om een paar recordjes, de like %...% levert je toch al een full table scan op etc. etc. dus uiteindelijk kun je inderdaad de where wel achterwege laten in dit geval. Ik vind 't echter een goed gebruik / je aan te leren/wennen dat een where-clause, in principe (uitzonderingen daargelaten), aanwezig hoort te zijn in een update/delete.

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij

Pagina: 1

Dit topic is gesloten.