WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   Enkel tabellfråga mysql (https://www.wn.se/forum/showthread.php?t=1038232)

trig338 2009-09-28 12:09

Enkel tabellfråga mysql
 
Hej,
Har ett litet problem med en wordpressinstallation. För en tid sen tog jag bort en databas och startade en helt ny till min sajt. Nu vill jag lägga tillbaka alla artiklar och kommentarer i min nya databas som är uppe och rullar. Helst via phpmyadmin. Det är samma sajt så crosslänkar borde fungera.

Jag skulle vilja addera tabellerna wp_posts, wp_postmeta och wp_comments till den nya databasen. Men om jag bara importerar så skrivs ju de aktuella värdena över.

Ska jag skapa tre nya tabeller med annat prefix, eller finns nån annan enkel lösning. Det är 4 000 artiklar och 20 000 kommentarer så jag vill inte strula till det;)

Jonas 2009-09-28 12:52

Eftersom dumpen du har, innehåller auto_increment värden på ett fält som har Primary satt. Och kommentarerna har andra "ägare" satta än dom som kommer att finnas.

Det kommer att innebära en hel del manuellt arbete för dig.

trig338 2009-09-28 12:58

Citat:

Ursprungligen postat av Jonas (Inlägg 20323964)
Eftersom dumpen du har, innehåller auto_increment värden på ett fält som har Primary satt. Och kommentarerna har andra "ägare" satta än dom som kommer att finnas.

Det kommer att innebära en hel del manuellt arbete för dig.

Jag har ju hela den gamla databasen intakt - så jag kan väl exportera och importera den hur jag vill? Problemet med ägarna av både vissa kommentarer och artiklar finns ju som sagt eftersom jag inte vill blanda in gamla users.

Är denna uppgift för krånglig för en ovan? Det viktigaste är egentligen alla artiklar - och dessa har bara max 5 författare. Så om jag åtminstone kunde återskapa dessa vore det stort.

trig338 2009-09-28 13:33

Funderade på om detta kanske går att göra enklare i Cpanel? Jag kan byta till den panelen om jag vill.

Jonas 2009-09-28 14:38

Problemet är så enkelt att Post ID = 1 kommer att finnas på 2 ställen.
En i den nya sidan, och en i den gamla.

WP relaterar kommentarerna till Post ID, pga detta så kommer kommentarerna att finns på 2st ställen, eller så kommer MySQL att strejka och du kommer troligen att få ett felmeddelande.

Det enklaste är att lägga in varje post för sig för varje tabell.

Innan du börjar så tar du självklart en backup av din nuvarande, och satsar på att göra detta i en ny databas för att förhindra ev. problem.

trig338 2009-09-28 14:42

Citat:

Ursprungligen postat av Jonas (Inlägg 20323981)
Problemet är så enkelt att Post ID = 1 kommer att finnas på 2 ställen.
En i den nya sidan, och en i den gamla.

WP relaterar kommentarerna till Post ID, pga detta så kommer kommentarerna att finns på 2st ställen, eller så kommer MySQL att strejka och du kommer troligen att få ett felmeddelande.

Det enklaste är att lägga in varje post för sig för varje tabell.

Innan du börjar så tar du självklart en backup av din nuvarande, och satsar på att göra detta i en ny databas för att förhindra ev. problem.

Finns det ingen enklare lösning, tex så har min nya install bara 40-50 posts än så länge. Kanske kan jag radera posts 1-50 i den gamla. Manuell hantering post-för-post går nog inte för det är nästan 4 000.

tartareandesire 2009-09-28 15:00

Du behöver nog inte göra det hela manuellt. Däremot bör du nog göra det hela via ett script och inte genom phpmyadmin eller annat gränssnitt. Enklast är i så fall att du lägger in allt det gamla i en ny databas och sedan använder denna. Du måste då se till så att alla värden hamnar rätt i enlighet med Wordpress struktur. Det är möjligt att det finns något sådant färdigt till WP men det har jag inte kollat upp.

Jonas 2009-09-28 15:18

Citat:

Ursprungligen postat av trig338 (Inlägg 20323983)
Finns det ingen enklare lösning, tex så har min nya install bara 40-50 posts än så länge. Kanske kan jag radera posts 1-50 i den gamla. Manuell hantering post-för-post går nog inte för det är nästan 4 000.

Handlar det om såpass lite, och du har någon timme över så skulle jag nog dumpa ut den information du har i databasen och lägga in varje inlägg EFTER att du lagt in den större backupen. Kommentarer, trackback mm får du lägga in manuellt via phpMyAdmin, posterna kan du ändra datum mm på via editorn tror jag.

trig338 2009-09-28 18:11

Kan man inte göra nån fullösning där man exporterar i csv eller xml och importerar de viktigaste bitarna?

Så här ser en artikel ut när jag exporterar i xml (och ja, vi har strul med å, ä och ö):

<ID>34</ID>
<post_author>1</post_author>
<post_date>2007-03-19 20:03:26</post_date>
<post_date_gmt>2007-03-19 19:03:26</post_date_gmt>
<post_content>Nu kommer bakslagen på rad för rektor Berit Westergren (månadslön 41 818 kr). Och för Filipstad. En ny undersökning visar att unga i Filipstad mobbas mest i Värmland.

I en forskarrapport från Karlstads Universitet fick unga i Värmlands län svara på frågor om de känner sig mobbade.

Bland de unga i Filipstad svarade &lt;strong&gt;35%&lt;/strong&gt; att de &lt;strong&gt;kände sig mobbade&lt;/strong&gt;. Det är mer än dubbelt så många som i alla andra kommuner i Värmland.

I Värmlandsnytt fick Berit Westergren beklaga uppgifterna och försäkra att:
&lt;blockquote&gt;- Vi tar det som en punkt i vår arbetsplan&lt;/blockquote&gt;
Finns det mer att gräva fram om Ferlinskolan månne?</post_content>
<post_title>Fler problem för Ferlinskolan och Filipstad</post_title>
<post_category>0</post_category>
<post_excerpt></post_excerpt>
<post_status>publish</post_status>
<comment_status>open</comment_status>
<ping_status>closed</ping_status>
<post_password></post_password>
<post_name>fler-problem-for-ferlinskolan-och-filipstad</post_name>
<to_ping></to_ping>
<pinged></pinged>
<post_modified>2007-03-20 23:08:12</post_modified>
<post_modified_gmt>2007-03-20 22:08:12</post_modified_gmt>
<post_content_filtered></post_content_filtered>
<post_parent>0</post_parent>
<guid>http://filipstad.ifolkmun.se/2007/03/19/fler-problem-for-ferlinskolan-och-filipstad/</guid>
<menu_order>0</menu_order>
<post_type>post</post_type>
<post_mime_type></post_mime_type>
<comment_count>69</comment_count>
</wp_posts>

Conny Westh 2009-09-28 21:41

Ha, Ha, det här är ett KLASSISKT exempel varför man ALDRIG ska använda autoincrement på viktiga tabeller....

Det är inte enkelt att använda någon typ av import för att åtgärda problemet och du kan npog glömma det där med att inet använda de gamla users.

Jag har inte sett just denna tabell från Wordpress, men problemet är KLASSISKT.

Du måste koppla ihop artiklar, users och konferenser och vill lägga in det i en ny databas, då är det en del skrivande av SQL-satser som gäller, och att hålla tungar rätt när man gör det.

Givetvis måste man ha hela den gamla databasen upp och snurra när man flyttar över data till den nya tabellstrukturen.

Men det orkar jag inte göra nu för det är en hel del jobb....

Clarence 2009-09-28 22:13

Ett enkelt sätt att lösa detta vore att i alla ställen i den nya databasen där postid finns uppdatera kolumnen till att vara postid + <max postid i gamla databasen>. På så sätt får alla dina nya poster högre IDs än de gamla och det finns ingen risk för konflikt.

De två andra sätten som verkar passande utan specielltmycket kunskap vore:
- Tömma databasen. Importera den gamla. Lägga in det nya manuellt.
- Rensa alla postids lägre än det nu högsta postid i nya databasen. Det löser problemet med unika nycklarna, men givetvis förlorar du dessa poster från din gamla installation (de går ju dock att lägga in manuellt likt väl).

Gällande numeriska IDs håller jag inte med Conny. Medans stegning från värdet 1 garanterar konflikt så kommer många alternativ att riskera konflikt, vilket man kan vara omedveten av. Oavsett om man använder numeriska eller icke-numeriska IDs så finns det enkla sätt att skala det till både en ny server eller horisontellt. Skillnaden med auto increment är för mig snarare att man slipper seeda IDs själv. Behöver man skala ut det till unika IDs över flera noder behöver man uppenbarligen förändra det (men inte ersätta det), men 99,9% av alla webbprojekt kommer aldrig dit.

trig338 2009-09-28 23:06

Citat:

Ursprungligen postat av Clarence (Inlägg 20324042)
Ett enkelt sätt att lösa detta vore att i alla ställen i den nya databasen där postid finns uppdatera kolumnen till att vara postid + <max postid i gamla databasen>. På så sätt får alla dina nya poster högre IDs än de gamla och det finns ingen risk för konflikt.

De två andra sätten som verkar passande utan specielltmycket kunskap vore:
- Tömma databasen. Importera den gamla. Lägga in det nya manuellt.
- Rensa alla postids lägre än det nu högsta postid i nya databasen. Det löser problemet med unika nycklarna, men givetvis förlorar du dessa poster från din gamla installation (de går ju dock att lägga in manuellt likt väl).

Gällande numeriska IDs håller jag inte med Conny. Medans stegning från värdet 1 garanterar konflikt så kommer många alternativ att riskera konflikt, vilket man kan vara omedveten av. Oavsett om man använder numeriska eller icke-numeriska IDs så finns det enkla sätt att skala det till både en ny server eller horisontellt. Skillnaden med auto increment är för mig snarare att man slipper seeda IDs själv. Behöver man skala ut det till unika IDs över flera noder behöver man uppenbarligen förändra det (men inte ersätta det), men 99,9% av alla webbprojekt kommer aldrig dit.

Detta tips tilltalade mig rejält. Jag har nu raderat alla posts i den gamla db med id upp till den högsta i nya db. Är det läge att testa då? Hur bör jag spara tabellen wp_posts från den gamla db innan jag importerar den till den nya db?

Gamla databasen: http://filipstad.ifolkmun.se/wp-cont...ads/old_db.gif

Jonas 2009-09-29 02:11

Spara backups av så mycket du kan. Före, Under & Efter. Blir det fel någonstans så blir det ordentligt fel. Såpass fel att du kanske inte kan logga in i WP.

Det du bör göra om du har möjlighet är att använda en annan databas i mysql. Det är snabbt och enkelt att byta i WP (wp-config.php - på ett ställe). Detta garanterar att du snabbt och enkelt kan byta tillbaka om något skulle gå fel samt även att du kan testa så att allting fungerar utan att riskera något.

trig338 2009-09-29 12:30

Jag tänkte sätta upp en testsajt först och simulera. Sen tar jag givetvis en färsk backup.

Clarence 2009-09-29 22:49

Citat:

Ursprungligen postat av trig338 (Inlägg 20324051)
Detta tips tilltalade mig rejält. Jag har nu raderat alla posts i den gamla db med id upp till den högsta i nya db. Är det läge att testa då? Hur bör jag spara tabellen wp_posts från den gamla db innan jag importerar den till den nya db?

Gamla databasen: http://filipstad.ifolkmun.se/wp-cont...ads/old_db.gif

Det borde gå bra med default-inställningar. Backup på båda sajterna, köra mot en ny kopia ifall något går fel vid importeringen samt att ha alla versioner online samtidigt för att snabbt kunna åtgärda det; så borde det inte kunna dyka upp några större problem.

trig338 2009-10-01 01:29

Nu gjorde jag ett försök att importera tabellen wp_posts rakt av, och det gick ju inget vidare. Ska jag ta wp_posts meta först eller kan jag importera wp_posts så den ignorerar alla fel?

Så blev det:

SQL query:

-- -- Dumping data for table `wp_posts` -- INSERT INTO `wp_posts` (`ID`, `post_author`, `post_date`, `post_date_gmt`, `post_content`, `post_title`, `post_category`, `post_excerpt`, `post_status`, `comment_status`, `ping_status`, `post_password`, `post_name`, `to_ping`, `pinged`, `post_modified`, `post_modified_gmt`, `post_content_filtered`, `post_parent`, `guid`, `menu_order`, `post_type`, `post_mime_type`, `comment_count`) VALUES (1700, 20, '2007-10-01 22:43:17', '2007-10-01 20:43:17', 'Har idag kollat med lite folk inom kommun, vart statyn tog vägen som stod vid Konsum. ingen som hitills vet. I morgon börjar del 2, då jag ringer ett annat namn i ärendet. skulle vara kul å veta om den finns kvar, och vad vi kan göra med den?', 'Statyn som försvann - Vi letar - Del 1', 0, '', 'publish', 'open', 'open', '', 'statyn-som-forsvsann-del-1', '', '', '2007-10-01 22:45:11', '2007-10-01 20:45:11', '', 0, 'http://filipstad.ifolkmun.se/2007/10/01/statyn-som-forsvsann-del-1[...]

MySQL said:

#1054 - Unknown column 'post_category' in 'field list'

Jonas 2009-10-01 11:53

Är det samma WP version på den information du försöker lägga in och den du har?

trig338 2009-10-01 12:10

Citat:

Ursprungligen postat av Jonas (Inlägg 20324414)
Är det samma WP version på den information du försöker lägga in och den du har?

Ja, jag uppgraderade den gamla till 2.8.4 (från 2.7) och den funkade i den - innan jag stängde ned den.


Alla tider är GMT +2. Klockan är nu 04:40.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson