![]() |
Database query needed
Hey all,
The issue is missing posts. Thread rows, attachments, etc are all there. Normally I would just search the missing post ids and export them as data and just insert them or find the last post id. In this case though there has been weeks of posting after the data was removed so what I need to do is figure out how to insert just the missing posts without touching the data that is there already. I have been going by the urls and thread ids and I have fixed a few threads but I need to do this in mass and I do not want to take any chances so can anyone please help me out here?? Thanks, Rich |
Your question is kind of confusing to me.
You are missing posts but want to import them back into the database? Where do you get the missing posts from? From an existing backup? |
Yes, Exactly. :)
--------------- Added [DATE]1441090577[/DATE] at [TIME]1441090577[/TIME] --------------- Just to elaborate. Yes I have a back up that contains the missing posts. The threads are there, it is just posts that are missing. I have been using google webmaster tools, crawl errors to find the missing posts. I have been getting the thread id from the url and pasting it into the post table search of the back up database which is imported into phpadmin. I then export only the data and insert it into the post table of the original database. This method works but takes too long. What I want to do if possible is insert all of the back up post table but only insert the missing or empty tables. Thanks |
The easiest way would be to make a PHP script for this.
1. Connect to both databases, the current live one and the backup one. 2. Using basic SELECT queries you check if posts of the backup database exist in the live database. 3. If not, insert it into the table. |
In order to make dave's suggestion work, you'd need to load the backup of your db into a new database on your mysql server and make sure whatever user has appropriate permissions on the new db.
|
You may want to check out this post - http://www.vbulletin.com/forum/showt...1#post1845274:
Quote:
|
Thanks,
Dave, can you give me an example of the query? Squid, Yes.. as mentioned I already have the back up database imported into phpadmin. :) Lynn, that is basically what I am doing but I am trying to automate the process rather than do each post one at a time. |
You can just grab all threads/posts that don't exist. You can alter the above queries as follows:
Code:
INSERT INTO post Code:
INSERT INTO thread |
Just want to add.... make a database backup before doing this!!!! Even better, make a database backup, set up a test site and then figure out the best method to do this.
|
Quote:
Thanks Guys Lynne, You are not kidding! :) |
Quote:
This should restore all posts removed from the livedb that are in the backupdb that do not belong to threads that still exist on your live db. (i.e. if you deleted a post from a thread but the thread is still on the live db it won't be restored) Code:
INSERT INTO libedb.post Code:
INSERT INTO livedb.thread |
Thanks,
The issue though is not missing or deleted threads.. They are there, it is missing posts only. I am not sure what happened to them but it was done using impex. Bottom line it is only posts that need to be imported. Thanks so much for your help. |
Then just use the first query but take out the NOT in the where clause.
|
Quote:
I will try this today. --------------- Added 06 Sep 2015 at 05:40 --------------- Ok, this is what I ran on the live database: PHP Code:
PHP Code:
|
Three things: first I think you want to be inserting into your live db not your backup db, second I think you want the threadid to be the ones from the live db (i.e. only grab posts for threads that are still in the live db), and third the reason I think you're getting the error is that you might require backticks or double quotes around your db name for the backupdb.
|
yes, those are both back ups.. that was the correct database as it is the back up of my main database. The other one is the back up of the back up. :)
I will try with the quotes. :) --------------- Added [DATE]1441600859[/DATE] at [TIME]1441600859[/TIME] --------------- Actually I think you may be right either that or I changed the names incorrectly when I copied it here. --------------- Added [DATE]1441602633[/DATE] at [TIME]1441602633[/TIME] --------------- I am not sure what I am missing but have tried everything and nothing works..keep getting the syntax error. I believe we need asterisks. |
If that's the query there's a problem with your tables, both the source and destination post tables are the in the same db. So you're inserting all posts from db1 into db1 if the threads are in db1, which doesn't make any sense, so that's likely what the syntax error is about. If you're restoring posts, then you have to restore from one db into the other based off the threads in the destination db.
(i.e. restore posts into db1 from db2 where the threads are in db1) Your current query is doing restore posts into db1 from db1 where threads are in db1, which won't accomplish anything. |
Yes, I changed the databases and still got the errors.I went by your directions.
PHP Code:
Your instructions: PHP Code:
|
If anyone can help me finish this I will glady donate a few $.
Keep in mind these are both back up databases that are live in phpadmin. I did not want to run this on my live site until I get it working. Don't let the "backup" in the database names confuse you. August is the back up.. the other is the one I am trying to add tyhe posts too. Thanks |
Try changing the query to insert ignore, as insert ignore will ignore constrains like primary key constraints.
|
What are the exact errors you are facing?
Also, do not use quotes around the database/table name, that is not valid SQL. |
The error is:
PHP Code:
PHP Code:
PHP Code:
|
Yes you get that error because you wrap your database and table name in quotes. Remove the quotes.
|
I will rerun it but I got the same type of error before I added those.
--------------- Added [DATE]1441967876[/DATE] at [TIME]1441967876[/TIME] --------------- Ok, ran: PHP Code:
Got: PHP Code:
not sure why but cant edit this |
I have a feeling it's messing up because you have dashes in your database name. Is it possible for you to rename it to something else, alphanumeric characters only? Then try it again.
|
Try this query. The database needs to be backticked seperately from the table name, and I've added IGNORE after INSERT.
Code:
|
Error says select command denied for user.. I think I know the issue though. I need both databases to use the same user. Right?
Ok, think I got it.. Checking now! Thanks --------------- Added [DATE]1442031673[/DATE] at [TIME]1442031673[/TIME] --------------- Very strange, this did work on the back ups but now I change the name and am getting an error saying the post table doesn't exist. ######.post table doesn't exist This is for the live database, not the back up. I do not understand it. --------------- Added [DATE]1442049184[/DATE] at [TIME]1442049184[/TIME] --------------- Ok, I got it. I believe the last issue had something to do with the log for that table. I ended up copying that entire database to a new one and then running the last query there. Perfect! This actually leads me to a new topic I will be posting about which is how and why my site actually started ranking better and getting more traffic after almost 400,000 posts were removed. Thanks! |
All times are GMT. The time now is 08:22 PM. |
Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, vBulletin Solutions Inc.
X vBulletin 3.8.12 by vBS Debug Information | |
---|---|
|
|
![]() |
|
Template Usage:
Phrase Groups Available:
|
Included Files:
Hooks Called:
|