vb.org Archive

vb.org Archive (https://vborg.vbsupport.ru/index.php)
-   Programming Articles (https://vborg.vbsupport.ru/forumdisplay.php?f=188)
-   -   Another easy way to convert database from Latin1 to UTF8 (https://vborg.vbsupport.ru/showthread.php?t=232537)

huuquynh 01-07-2010 10:00 PM

Another easy way to convert database from Latin1 to UTF8
 
I tried another way by searching some articles on vbulletin but it takes me long time, many steps, and not success... I found another way to do. I hope that my experiment can help someone is running a vbulletin for a long time with latin1, and now he want to convert to utf8.

After trying by myself offline some ways to convert database from latin1 to utf8, I see that there is a simple way: less steps and really easy, and no need special tool: iconv-chunk (if the database file is too big), uconv (database tools)...

First of all. Turn off your vbulletin board. And turn off httpd/apache service to dedicate all resources for database converting.


Next step: change mysql database server configuration.

Because the default of mysql database server is running at latin1 charset. So we need to change it to UTF8 by modify my.cnf and input more settings:

Code:

default-character-set = utf8

[client]

default-character-set = utf8

After modified, restart mysql server for the changing affect...

Next step: dump the old database to file.

Code:

mysqldump -u dbuser -p --opt --skip-set-charset --default-character-set=latin1 database > yourboard.sql
(this command will ask you type the db's password)

Next step: change charset from latin1 to utf8 in your dump file.

Code:

perl -i -pe 's/DEFAULT CHARSET=latin1/DEFAULT CHARSET=utf8' yourboard.sql
Next step: keep the old database for rescure if you do something wrong... create new database with charset utf8.

Code:

mysql --user=dbuser -p --execute="CREATE DATABASE new_database_name CHARACTER SET utf8 COLLATE utf8_general_ci;"
(this command will ask you type the db's password too)

Next step: import to new database.

Code:

mysql -u dbuser -p new_database_name < yourboard.sql
Last step: Modify config.php.

Modify the new database to connect to in config.php.

And if you are using mysqli, go to the bottom of your config, you will see one line to un-comment.

That's all. I did by myself for my board with more than 100.000 members and 1.000.000 posts.

Goodluck! And remember that you should keep the original database for rescure if you do something wrong.

Quynh H Nguyen

SeV3n 01-15-2010 02:10 PM

I'll try it for my forum too. Thanks.

Trajche 06-25-2010 05:21 PM

What about the language encoding setting in vBulletin ? Did you change that too?

P.S.

I think you forgot the third slash here:
Code:

perl -i -pe 's/DEFAULT CHARSET=latin1/DEFAULT CHARSET=utf8' yourboard.sql
As it gives the error..
Code:

Substitution replacement not terminated at -e line 1.
Therefore the right line would be:
Code:

perl -i -pe 's/DEFAULT CHARSET=latin1/DEFAULT CHARSET=utf8/' yourboard.sql
Am I on the right track here? Or completely off?

dimitrisgr 03-09-2014 08:13 PM

Ηello...

I have the same problem but I have my own server and I can not make this change. There are other ways;;


All times are GMT. The time now is 09:17 AM.

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

X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.01054 seconds
  • Memory Usage 1,717KB
  • 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
  • (8)bbcode_code_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