vb.org Archive

vb.org Archive (https://vborg.vbsupport.ru/index.php)
-   vB3 Programming Discussions (https://vborg.vbsupport.ru/forumdisplay.php?f=15)
-   -   SQL query to change userid's by one digit. (https://vborg.vbsupport.ru/showthread.php?t=227106)

mhackl 10-30-2009 05:56 PM

SQL query to change userid's by one digit.
 
Since I migrated to a new installation of vbulletin userid's are off by one digit due to the new installs "admin"account. What query would I run to change every userid by one digit?

gmerin 10-31-2009 05:29 PM

this will change the userid, but i'm pretty certain that's not what you really want, since the rows in the other tables tend to relate the users' data by the userid so changing it in just one table will just screw up your board. i'm figuring what you really want to do is to increment the userid in all the impacted tables, which is why there are vb migration programs/scripts for doing these sort of tasks.

but in case you want to see the sql for just what you asked...

--assuming you have sql access to your mysql instance, first, this will show you what the update sql statement will do without making the change:

select a.userid, a.userid+1 from user a
order by a.userid;

--this will make the change (a.userid+x increments; a.userid-x decrements):

update user a
set a.userid = a.userid+1 ;

--if you want to limit or qualify the changes:

update user a
set a.userid = a.userid+1
where <fieldname> = <some appropriate qualifier value> ;

--for example, modify every userid except userid=1:

update user a
set a.userid = a.userid+1
where a.userid > 1;

--always back up the table first:

create table user_bak as
select a.* from user a;

--if you make a mistake and need to restore the original table:

truncate table user;

insert into user
select * from user_bak;

mhackl 11-05-2009 04:02 AM

Thank you very much for your response!

Quote:

Originally Posted by gmerin (Post 1908731)
which is why there are vb migration programs/scripts for doing these sort of tasks.

Are you speaking of impex? If so, this problem is a result of impex. if not, what scripts are you speaking of?

gmerin 11-07-2009 05:49 PM

ok, since you have mysql v5.0.2+ you can query the information_schema. how to do this would involve writing a book, luckily someone already has:http://dev.mysql.com/tech-resources/...dictionary.pdf

what you want to do is join information_schema.tables to information_schema.columns, select those tables in the vbulletin schema that have the userid column, then update userid from each of those tables with the modified userid from the table user as you loop thru the user table modifying the userids in it.

in other dbms (like oracle & sql server) i would do this with multiple cursors. i'll see what i can come up with for mysql later this week. in php you would do this with the mysql_fetch_row command {but doing it in sql is more challenging and therefore, more fun ;) }


All times are GMT. The time now is 08:52 AM.

Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, vBulletin Solutions Inc.

X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.02708 seconds
  • Memory Usage 1,716KB
  • Queries Executed 10 (?)
More Information
Template Usage:
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (1)bbcode_quote_printable
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)post_thanks_navbar_search
  • (1)printthread
  • (4)printthreadbit
  • (1)spacer_close
  • (1)spacer_open 

Phrase Groups Available:
  • global
  • postbit
  • showthread
Included Files:
  • ./printthread.php
  • ./global.php
  • ./includes/init.php
  • ./includes/class_core.php
  • ./includes/config.php
  • ./includes/functions.php
  • ./includes/class_hook.php
  • ./includes/modsystem_functions.php
  • ./includes/class_bbcode_alt.php
  • ./includes/class_bbcode.php
  • ./includes/functions_bigthree.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • printthread_start
  • bbcode_fetch_tags
  • bbcode_create
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • printthread_post
  • printthread_complete