![]() |
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;) |
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. |
Citat:
Ä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. |
Funderade på om detta kanske går att göra enklare i Cpanel? Jag kan byta till den panelen om jag vill.
|
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. |
Citat:
|
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.
|
Citat:
|
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 <strong>35%</strong> att de <strong>kände sig mobbade</strong>. 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: <blockquote>- Vi tar det som en punkt i vÃ¥r arbetsplan</blockquote> 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> |
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.... |
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. |
Citat:
Gamla databasen: http://filipstad.ifolkmun.se/wp-cont...ads/old_db.gif |
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. |
Jag tänkte sätta upp en testsajt först och simulera. Sen tar jag givetvis en färsk backup.
|
Citat:
|
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' |
Är det samma WP version på den information du försöker lägga in och den du har?
|
Citat:
|
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