Fórum Ubuntu CZ/SK
Ubuntu pro osobní počítače => Internet a sítě => Téma založeno: Milhouse 10 Listopadu 2010, 09:21:05
-
Ahoj.
Potřeboval bych trochu poradit.
Přesunul jsem stránky z jedné domény na jinou, což už mám hotové.
Ale klikací odkazy (obrázků a manuálních odkazů) stále ukazují na původní web. Lze to nějak hromadně změnit? Zkoušel jsem to v Phpmyadmin, ale po vyhledání výrazů to neumím jednoduše změnit.
Je to přesunuto z ic.cz, ale to je teď absolutně kaput, lze vidět stejné chování také na elektricky.g6.cz (testovací).
Za jakoukoli radu budu velice vděčný! :)
-
podobne systemy vetsinou maji jeden konfiguracni soubor, kde je potrebne nastaveni ulozeno
tam by melo stacit prepsat hodnoty na aktualni a melo by behat...
-
Ano, hodnoty "siteurl" a "home" jsem změnil. Zůstávají "už jen" ty odkazy. :)
Zkouším postupovat dle http://webtrh.cz/48990-hromadna-zmena-databazi?p=321745
Ale export->změna v texťáku->import se mi zdá poněkud nesystémová. :)
-
Obávám se, že to jinak, než růčo nepůjde. Ona už je chyba v tom, že zřejmě máš (předpokládám, že v db) ty odkazy uloženy včetně domény. V tom případě asi opravdu nezbývá, než si vytvořit sql dump, v něm provést hromadnou změnu a zase ho do db naimportovat.
P.S.
A nejhorší (kromě trpaslíků) jsou weby, kde jsou absolutní odkazy (interní, samo) pěkně rovnou v php skriptech. To je pak úplně na pos...
-
Jo, zkoušel jsem odkakovat relativně, ale nevedlo se mi. Takže nouzově to mám natvrdo.
Teď to asi udělám tím importem, ale rád bych to uměl i přímo v DB...
-
Ale jistě, v db to samozřejmě jde, ale dá to víc práce. Musel bys zřejmě hezky dělat update s náhradou obsahu každého jednoho sloupce, kde by ty odkazy mohly být. Záleží tedy na tom, v kolika tabulkách a v kolika sloupcích se ty odkazy mohou vyskytovat.
-
V mnoha. :) Už jsem to nahradil v externím editoru. Ale naimportovat DB bez smazání původní mi zatím nejde. Ale už googlim. :)
#1062 - Duplicate entry '3' for key 1
-
Aha...
No, tos' ten sql dump měl udělat včetně struktur a včetně smazání tabulek...
-
zalezi co pouzivas na spravu db, ale vetsinou jde v dump definovat drop+create na tabulky, coz by mohlo resit tvuj problem
-
Používám na ic.cz a na endora.cz standardní Phpmyadmin.
Exportoval jsem zřejmě jen tabulku, teď už mám i strukturu. Dělal jsem to trochu špatně. Můžu smazat databázi ve webovém správci, ale mus to snad jít i méně destruktivně, ne?
Drop a create tabulky mi zatím nic neříkají. To ale asi nebude zatím třeba.
Jen mě zaráží, že nelze přepsat plnou tabulku importem jiné tabulky... ::)
#1007 - Can't create database '1890_elektricky'; database exists
-
Aha. Tak tedy polopatě...
Předpokládám, že se jedná o databázi MySQL.
V exportu v phpMyAdminovi je mimo jiné vhodné zaškrtnout: Struktura, Přidat DROP TABLE / DROP VIEW, Přidat IF NOT EXISTS.
V dumpu pak bude u každé tabulky:
DROP TABLE IF EXISTS `tabulka`;
CREATE TABLE IF NOT EXISTS `tabulka`...
a teprve pak budou data.
Při importu to vždycky nejpve zruší tabulku, vytvoří tabulku a naplní ji to daty.
-
Ano, jedná se o mysql a Worpressu. Výsledek snažení lze vidět v odkazu mého podpisu. :) Takže takto:
[attachment deleted by admin]
-
Takže stále "#1007 - Can't create database '1890_elektricky'; database exists" . Zkusil jsem i s "Přidat DROP DATABASE". Stejné.
Četl jsem, že by měl být nějaký unikátní primární klíč...
-
No, na drop/create database zřejmě nemáš práva.
Takže pokud máš v dumpu drop database a create database, tak to vyhoď. Důležité je drop table a create table, tedy rušení a vytváření tabulek.
Pokud by nešlo ani to, tak by místo drop/create table mělo pomoci truncate table..., čímž odstraníš obsah tabulky a můžeš ho pak opět vložit.
Dokumentace k MySQL by měla být na http://dev.mysql.com/doc/.
-
No jo, jsem to už domrvil úplně. :) Jedu od znova, rady se mi však budou hodit. ;)
-
A ještě bych ti doporučil nějak si zařídit, aby se ti všechny odkazy, které vedou na původní web ořesměrovávali na nový web - nepřijdeš tak o zpětné odkazy. Možností je víc - buď přes htaccess (pokud to hosting dovoluje) až po triviální aplikaci v php, která se o to postará sama, např.:
$newhost = "http://www.novadomena.cz";
header("HTTP/1.1 301 Moved Permanently");
header("Location: " . $newhost . $_SERVER['REQUEST_URI']);
header("Connection: close");
exit;
Do proměnné $newhost napiš url adresu složky, kde máš svůj index.php; předpokládám, že budeš mít buď subdoménu nebo nějaký kořenový adresář, takže to bude buď ve stylu http://milhouse.hosting.cz nebo http://www.hosting.cz/milhouse.
Pokud má někdo někde uložený odkaz na tvoje původní stránky, přesměruje ho to automaticky na nové.
P.S.
Pokud bys na to šel tím php, zjisti si nejdříve, jak ti nový hosting vrací $_SERVER['REQUEST_URI']. Mohl by již obsahovat tvůj kořenový adresář, takže bys ho pak v $newhost už samozřejmě nepsal. Netuším, s těmito free hostingy nemám zkušenosti. Ale ty si určitě poradíš :-)
-
Ano, hodnoty "siteurl" a "home" jsem změnil. Zůstávají "už jen" ty odkazy. :)
Zkouším postupovat dle http://webtrh.cz/48990-hromadna-zmena-databazi?p=321745
Ale export->změna v texťáku->import se mi zdá poněkud nesystémová. :)
Vždyť to máš v tom článku na který odkazuješ napsané:
UPDATE tabulka SET sloupec = REPLACE(sloupec, 'starý kód', 'nový kód');Tzn. musíš vědět jméno tabulky a sloupce ve kterém jsou texty se špatnými odkazy uložené. A pak jen phpmyadminu spustíš sql dotaz. Něco jako:
UPDATE clanky SET textclanku = REPLACE(textclanku, 'stara.domena.cz', 'nova.domena.cz');
-
Samozřejmě přesměrovávám přes .htaccess. Doménu 2.řádu mám a na tu to stěhuju. Prozatím na placeném ic.cz. Ale už pomalu zdrhám jinam. :) Do php se mi nechce, nejsem programátor, ale pokud to nepůjde v .htaccess, tak se na to asi mrknu. Díky za rady. :)
Iljusin: No, problém je, že jsem tomu nerozuměl. Ale ještě na to mrknu...
-
Koukám, že to je wordpres. Nemám jej nainstalovaný, takže jen tipuju, že by to mohlo být konkrétně takto:
UPDATE wp_posts SET post_content = REPLACE(post_content, '.ic.cz/', '.g6.cz/');V phpmyadminu si v levém menu vybereš svou databázi a pak v hlavním okně v záložce SQL vložíš dotaz a odešleš. Finito
-
Jo, super! Tak tenhle příklad jsem už pochopil a je i funkční. Výsledek je a jejich variace:
UPDATE wp_posts SET guid = REPLACE(guid, 'elektricky.g6.cz/', 'elektricky.cz/')
UPDATE wp_posts SET post_content = REPLACE(post_content, 'elektricky.g6.cz/', 'elektricky.cz/')
Export ( s parametrem "Přidat DROP TABLE / DROP VIEW") a import zřejmě může být fakt jen po kliknutí na jméno databáze.
Jen takové otázky pro doplnění:
1) je nutné se starat o "information_schema", které je uvedeno při exportu vlevo nahoře, když nekliknu na databázi? Viz předchozí obrázek.
2) Dají se vybrat všechny sloupce, nejen GUI atd? Pak lze udělat změnu najednou.
3) Asi si ze mě ic.cz FTP server dělá prču, přejmenuju soubor a za chvíli ho již stejným uživatelem nemůžu změnit, protože má jiného vlastníka. No, je toto normálnéééé? :) No teď už tam nejde vůbec nic na FTP udělat! :o :'( Grrrrrrrrr...........
-
1) je nutné se starat o "information_schema", které je uvedeno při exportu vlevo nahoře, když nekliknu na databázi? Viz předchozí obrázek.
Ne, informační schéma tě nezajímá, k tomu bys teoreticky ani neměl mít přístup.
2) Dají se vybrat všechny sloupce, nejen GUI atd? Pak lze udělat změnu najednou.
Nechápu čemu říkáš GUI.
Když chceš něco vyexportovat v phpmyadminu, tak to máš rozdělené tak, že buď exportuješ jen strukturu nebo jen data nebo oboje najednou (defaultně). Předpoládejme, že chceš obojí, takže necháš zaškrtnuté všechno tak jak je. Máš vybrané všechny tabulky a zaškrtnuté nějaké ty checkboxy. Kromě toho také můžeš zafajfkovat volby (jestli tam jsou) "Uzavřít příkazy v transakci" a "Vypnout kontrolu cizích klíčů". Můžeš si také zaškrtnout, že to chceš do souboru. Ten soubor pak na svém novém webu zase naimportuješ přes záložku SQL (předtím samozřejmě opět vybereš v levém menu databázi)
-
Pardon, mělo to být GUID, tak jako v příkazu...
-
2) Dají se vybrat všechny sloupce, nejen GUI atd? Pak lze udělat změnu najednou.
Co sloupec, to set `sloupec` = replace..., co tabulka to update `tabulka` set... Takže při opravě více sloupců ve více tabulkách je to celkem fuška.
-
Hmmm, takže pokud mám název DB elektrickycz, měl by dotaz vypadat takto?
UPDATE elektrickycz SET guid = REPLACE(guid, 'elektricky.g6.cz/', 'elektricky.cz/')
Použil jsem dle rady původně toto:
UPDATE wp_posts SET guid = REPLACE(guid, 'elektricky.g6.cz/', 'elektricky.cz/')
-
Hmmm, takže pokud mám název DB elektrickycz, měl by dotaz vypadat takto?
UPDATE elektrickycz SET guid = REPLACE(guid, 'elektricky.g6.cz/', 'elektricky.cz/')
Použil jsem dle rady původně toto:
UPDATE wp_posts SET guid = REPLACE(guid, 'elektricky.g6.cz/', 'elektricky.cz/')
Ajajaj; žes to raději neudělal v tom dumpu :-)
Syntaxe je update jméno_tabulky set jméno sloupce = ... Viz. http://dev.mysql.com/doc/refman/5.1/en/update.html.
Musíš to udělat pro všechny tabulky, ve kterých by mohlo být někde to staré url a v rámci každé takové tabulky pro všechny sloupce, kterých by se to taktéž mohlo týkat.
Hele, pokud se nechceš učit SQL, tak bych ti opravdu doporučil ten texťák.
Držím palce :-)
-
S názvem databáze v dotazech vůbec nepracuješ. Jakmile v levém sloupci klikneš na nějakou databázi, tak už se dotazy vztahují k ní. Víc už se o její jméno nestaráš.
Představ si databázi elektrickycz jako spreadsheet/sešit (elektricky.xls nebo lépěji elektricky.ods).
1) Co list v sešitu, to jedna tabulka v db. Každý list/tabulka má své jméno (wp_post např.)
2) Co sloupec na listu, to sloupec v db. Každý sloupec má své jméno.
Ten můj dotaz říká, prohledej v listu (tabulce) wp_post, v sloupci post_content všechny texty a tam nahraď něco za něco. Takže abys opravil celou db musíš zjistit ve které tabulce a ve kterém konkrétním sloupci potřebuješ texty opravit.
Kdybys potřeboval opravit dva sloupce v jedné tabulce, stačí ti jeden dotaz:
UPDATE nazevtabulky SET sloupec1 = REPLACE(sloupec1, 'cozmenit', 'zacozmenit'), sloupec2 = REPLACE(sloupec2, 'cozmenit', 'zacozmenit')
Když opravuješ data ve sloupcích ve více tabulkách, musíš mít jednotlivé dotazy.
UPDATE nazevtabulky1 SET sloupec1 = REPLACE(sloupec1, 'cozmenit', 'zacozmenit')UPDATE nazevtabulky2 SET sloupec1 = REPLACE(sloupec1, 'cozmenit', 'zacozmenit')A to je to co psal mka. Někdy zkrátka může bejt pracný najít všechny sloupce ve všech tabulkách a nad všemi pak spustit SQL dotaz na změnu. Proto se to dělá i tak jak už bylo zmíněno. Vezmeš export z původní databáze, otevřeš ho v textovém editoru, tam zadáš najdi/nahraď a výsledek použiješ jako import.
-
Neboj, v texťáku jsem to udělal, jen mě to zajímá. :)
Šak dneska jsem se zbavil ic.cz. Předal správu DNS na kvapem.cz, hosting prozatím na free endora.cz(později zaplatím). Zatím spokojenost, administrace je nebe a dudy, oproti ic.cz! A jak fičí FTP. :)
www.elektricky.cz :)