Cum să înlocuiești numele de domeniu într-o bază de date WordPress?

21 dec. 2010, 22:54:53
Vizualizări: 46.7K
Voturi: 17

Am o bază de date WordPress care a fost instalată într-un mediu de dezvoltare... astfel, toate referințele către site au o adresă IP fixă (de exemplu 192.168.16.2). Acum, trebuie să migrez acea bază de date într-o nouă instalare WordPress pe un hosting. Problema este că dump-ul SQL conține multe referințe la adresa IP, iar eu trebuie să le înlocuiesc cu: my_domain.com.

Aș putea folosi sed sau altă comandă pentru a face înlocuirea din linia de comandă, dar îngrijorarea mea este că există multe date de configurare care folosesc JSON. Și ce? Păi, după cum știți, array-urile JSON folosesc lucruri precum: s:4: pentru a ști câte caractere are un element, așa că dacă înlocuiesc pur și simplu IP-ul cu numele de domeniu, fișierele de configurație vor fi corupte.

Am folosit acum câțiva ani o aplicație pentru Windows care permite modificarea valorilor într-o bază de date și are grijă de array-urile JSON. Din păcate, am uitat numele aplicației... așa că întrebarea este: cunoașteți vreo aplicație care să-mi permită să fac asta?

3
Comentarii

Acesta nu este un răspuns complet, dar ar putea să te ajute în căutarea unuia: datele pe care le analizezi nu sunt în format JSON. JSON nu stochează (în mod normal) tipurile și lungimile valorilor în acest fel. Ceea ce vezi sunt date SERIALIZATE. O căutare pe Google pentru "mysql replace serialized" conduce la această pagină, care ar putea să te ajute: http://davidcoveney.com/mysql-database-search-replace-with-serialized-php/

MathSmath MathSmath
21 dec. 2010 23:10:09

Hei, comentariul tău este singurul răspuns care a fost util pentru mine... mută-l într-un răspuns ca să-l poți marca ca corect. Mulțumesc!

Cristian Cristian
22 dec. 2010 14:39:25

Mă bucur că te-a ajutat! L-am postat ca răspuns.

MathSmath MathSmath
22 dec. 2010 20:16:38
Toate răspunsurile la întrebare 11
1
11

Codex are un ghid decent - Schimbarea URL-ului site-ului.

Practic, există mai multe locuri unde URL-ul contează sau nu prea mult (posibil să fi omis câteva):

  • opțiunile home și siteurl care controlează unde WP crede că este site-ul;
  • GUID-urile articolelor, care arată ca link-uri dar de fapt sunt doar identificatori. Nu sunt absolut sigur că sunt irelevante, dar am schimbat URL-urile pe o stivă de test de multe ori și nu m-am obosit să le actualizez.
  • link-urile din conținutul articolelor;
  • posibile link-uri în setările plugin-urilor.
22 dec. 2010 06:58:03
Comentarii

Sunt destul de mulți pași. După ce mv olddir.com newdir.com va trebui să reconfigurați serverul web, să reporniți serverul web. Urmați instrucțiunile din codex de aici și apoi ar trebui să vă puteți autentifica ca administrator. Asta ar trebui să vă ajute să începeți :-)

Jay Brunet Jay Brunet
17 feb. 2015 23:00:38
2

Datele pe care le vizualizați nu sunt în format JSON. JSON nu stochează (în mod normal) tipurile și lungimile valorilor în acest fel. Ceea ce vedeți sunt date SERIALIZATE. O căutare pe Google pentru "mysql replace serialized" vă va conduce la această pagină, care ar putea fi de ajutor: http://davidcoveney.com/mysql-database-search-replace-with-serialized-php/

22 dec. 2010 20:16:06
Comentarii

Mulțumesc... Am lucrat ca dezvoltator PHP timp de 2 ani. Nu pot să cred că am uitat diferența dintre ceva serializat și un șir JSON.

Cristian Cristian
22 dec. 2010 20:56:05

acest proiect are acum un repo github: https://github.com/interconnectit/Search-Replace-DB

Lluís Lluís
22 iul. 2021 09:15:50
0

Puteți seta aceste valori cu constantele din fișierul wp-config.php. După aceasta, puteți, oricând doriți, să modificați intrările în instrumentul de bază de date precum 'PhpMyAdmin' sau 'Adminer'.

Scrieți acest cod în wp-config.php și valorile din baza de date nu vor mai fi relevante:

define('WP_HOME', 'http://example.com/to-wordpress');
define('WP_SITEURL', 'http://example.com/to-blog');
22 dec. 2010 00:02:59
1

După cum a spus Rarst mai sus, există doar două setări în baza de date care TREBUIE modificate. După importarea bazei de date, mă autentific în PHPMyAdmin și modific baza de date direct.

Folosesc un server de dezvoltare pe PC-ul meu tot timpul pentru a importa fluxuri de date și acestea au URL-ul atașat la articole de genul http://localhost/situldetest/numele-postului/ și nu a cauzat niciodată probleme.

Am folosit în trecut o căutare și înlocuire SQL până când am realizat că nu contează. Am migrat câteva site-uri de la un domeniu la altul și când am avut URL-uri absolute în conținut, am folosit opțiunea de căutare și înlocuire SQL.

update wp_posts set post_content = replace(post_content,'http://www.vechiuldomeniu/','http://www.nouldomeniu/');

David

23 dec. 2010 01:53:19
Comentarii

Există unele plugin-uri, precum ContactForm7, care salvează numele domeniului într-un șir serializat, împreună cu alte variabile de configurare. Când modifici un șir serializat, acesta poate fi corupt dacă lungimea sa se schimbă, deci de fapt, uneori, sunt mai multe lucruri de schimbat decât doar două setări.

Cristian Cristian
23 dec. 2010 03:03:17
0

Acesta este o resursă uimitoare pe care am marcat-o și la care revin mereu http://www.onextrapixel.com/2010/01/30/13-useful-wordpress-sql-queries-you-wish-you-knew-earlier/

Ei afirmă

UPDATE wp_options SET option_value = replace(option_value, 'http://www.oldsiteurl.com', 'http://www.newsiteurl.com') WHERE option_name = 'home' OR option_name = 'siteurl';
21 dec. 2010 23:51:47
0

Interogări SQL simple - nu sunt necesare înlocuiri complicate:

update wp_options set option_value = 'http://mynewdomain.com' where option_name = 'siteurl';

update wp_options set option_value = 'http://mynewdomain.com' where option_name = 'home';

Folosește aceste interogări în PHPMyAdmin sau orice altă metodă preferi pentru a accesa baza de date.

23 dec. 2010 04:31:57
0

Asigurați-vă că ați selectat noua bază de date, apoi executați unele comenzi SQL de actualizare și înlocuire pe tabele, în special wp_options, wp_posts, wp_postmeta.

Utilizați codul de mai jos și înlocuiți vechile și noile URL-uri, fără slash-uri finale. De asemenea, dacă este necesar, modificați prefixul tabelelor acolo unde este cazul (de exemplu wp_ )

UPDATE wp_options SET option_value = replace(option_value, 'http_www.oldurl', 'http_www.newurl') WHERE option_name = 'home' OR option_name = 'siteurl';    
UPDATE wp_posts SET guid = replace(guid, 'http_www.oldurl','http_www.newurl');    
UPDATE wp_posts SET post_content = replace(post_content, 'http_www.oldurl', 'http_www.newurl');    
UPDATE wp_postmeta SET meta_value = replace(meta_value,'http_www.oldurl','http_www.newurl');
14 oct. 2017 20:31:12
0

Uită-te la răspunsul meu la această întrebare:

Acesta abordează problemele tale cu curățarea datelor și poate fi personalizat pentru nevoile specifice de migrare a datelor prin utilizarea de hook-uri.

Sper că te ajută.

22 dec. 2010 07:16:36
0

Aceasta este o întrebare foarte veche, dar din moment ce am dat peste ea în timp ce căutam altceva, am considerat că ar fi bine să adaug acest lucru pentru referințe viitoare.

Cred că cea mai simplă și completă metodă de a face acest lucru este utilizând searchreplacedb2.php. Acesta poate fi găsit aici: http://interconnectit.com/products/search-and-replace-for-wordpress-databases/ împreună cu o explicație despre utilizarea sa.

Cu siguranță mi-a economisit mult timp în procesul de migrare de la mediile de dezvoltare la cele de producție pe site-urile mele WordPress.

Doar asigurați-vă că îl ștergeți de pe un server public după ce ați terminat!

19 apr. 2013 20:02:14
0

Înțeleg că doriți să mutați site-ul WordPress din mediul de dezvoltare pe un server nou sau pe serverul de producție.

Recent, am mutat și eu site-ul pe serverul de producție și am întâlnit aceeași situație. Am nevoie să actualizez URL-ul site-ului deoarece WordPress stochează URL-ul site-ului în baza de date.

Am găsit o interogare MySQL bună care îmi permite să schimb URL-ul direct din baza de date, astfel:

SET @search := "http://olddomain.com";
SET @replace := "http://newdomain.com";

UPDATE `wp_options` SET `option_value` = REPLACE(option_value, @search, @replace) WHERE option_name = "siteurl";
UPDATE `wp_options` SET `option_value` = REPLACE(option_value, @search, @replace) WHERE option_name = "home";
UPDATE `wp_options` SET `option_value` = REPLACE(option_value, @search, @replace) WHERE option_name = "product_list_url";
UPDATE `wp_options` SET `option_value` = REPLACE(option_value, @search, @replace) WHERE option_name = "shopping_cart_url";
UPDATE `wp_options` SET `option_value` = REPLACE(option_value, @search, @replace) WHERE option_name = "checkout_url";
UPDATE `wp_options` SET `option_value` = REPLACE(option_value, @search, @replace) WHERE option_name = "widget_text";
UPDATE `wp_options` SET `option_value` = REPLACE(option_value, @search, @replace) WHERE option_name = "headerImageLogo";
UPDATE `wp_options` SET `option_value` = REPLACE(option_value, @search, @replace) WHERE option_name = "cunjo_plugin_url";
UPDATE `wp_options` SET `option_value` = REPLACE(option_value, @search, @replace) WHERE option_name = "wpsr_socialbt_data";
UPDATE `wp_options` SET `option_value` = REPLACE(option_value, @search, @replace) WHERE option_name = "issuem";
UPDATE `wp_options` SET `option_value` = REPLACE(option_value, @search, @replace) WHERE option_name = "_transient_dgxdonate_t70pbg1htu_1396322372";
UPDATE `wp_options` SET `option_value` = REPLACE(option_value, @search, @replace) WHERE option_name = "dgx_donate_log";
UPDATE `wp_options` SET `option_value` = REPLACE(option_value, @search, @replace) WHERE option_name = "headerBackgroundImage";
UPDATE `wp_options` SET `option_value` = REPLACE(option_value, @search, @replace) WHERE option_name = "transact_url";
UPDATE `wp_postmeta` SET `meta_value`=REPLACE(meta_value, @search, @replace);
UPDATE `wp_usermeta` SET `meta_value`=REPLACE(meta_value, @search, @replace);
UPDATE `wp_posts` SET `guid`=REPLACE(guid, @search, @replace);
UPDATE `wp_posts` SET `post_content`=REPLACE(post_content, @search, @replace);

Trebuie doar să înlocuiți URL-ul site-ului dumneavoastră de la vechiul domeniu la noul domeniu și apoi să executați interogarea în MySQL folosind PHPMYADMIN.

Pentru mai multe informații, puteți citi acest tutorial.

https://tryvary.com/wordpress-change-url-in-database-using-mysql-query/

27 mar. 2020 05:35:07
0

Asigurați-vă că v-ați conectat la noua bază de date, apoi rulați câteva interogări SQL.

Folosiți codul de mai jos și înlocuiți vechile și noile dvs. URL-uri, fără slash-uri finale. De asemenea, dacă este necesar, schimbați valorile prefixului tabelelor acolo unde este cazul (de exemplu wp_ )

UPDATE wp_posts 
SET post_content = REPLACE(post_content, 'https://oldomain.com', 'https://newdomain.com'),
    guid = REPLACE(guid, 'https://oldomain.com', 'https://newdomain.com');

UPDATE wp_postmeta 
SET meta_value = REPLACE(meta_value, 'https://oldomain.com', 'https://newdomain.com');

UPDATE wp_options 
SET option_value = REPLACE(option_value, 'https://oldomain.com', 'https://newdomain.com');

UPDATE wp_commentmeta 
SET meta_value = REPLACE(meta_value, 'https://oldomain.com', 'https://newdomain.com');

UPDATE wp_comments 
SET comment_content = REPLACE(comment_content, 'https://oldomain.com', 'https://newdomain.com');
13 ian. 2025 18:34:10