更改mysql数据库库字符集

作者:admin 发布时间:April 25, 2008 分类:默认

我用来转换discuz库的,这只是居于mysql5.0gbk,utf8多字节字符集没实质性区别(或许是我认识不够),做的一个改名。

 更改你数据库 库的字符集,包括库里表的字符集,表上字段的字符集。

注意:这不能将你latin1的表转换到多字节字符集。(理论上是可以,但是转换后它仍然是一个latin1的特性,只是强制换了个名字,除了给你带来一些不必要的困惑外,不具有任何实际意义)。


本人运用环境 gbk 换到 utf8.


 

PHP代码
  1. <?   
  2. mysql_pconnect('localhost','xxx','xxx');   
  3. mysql_select_db($dbname);   
  4. mysql_query("ALTER DATABASE `$dbname` DEFAULT CHARACTER SET utf8");   
  5. $query1=mysql_query("SHOW TABLE STATUS");   
  6. $row=array();   
  7. while ($row=mysql_fetch_assoc($query1)){   
  8.     $tname = $row['Name'];   
  9.     mysql_query("ALTER TABLE `".$tname."` DEFAULT CHARACTER SET utf8");   
  10.     $query2=mysql_query("SHOW FULL FIELDS FROM `".$tname."`");   
  11.     $row=array();   
  12.     while($row = mysql_fetch_assoc($query2)){   
  13.         if(!is_null($row['Collation'])){   
  14.             $x ='CHARACTER SET utf8';   
  15.   
  16.   
  17.             if(!is_null($row['Default']))   $d = "default '".$row['Default']."'";   
  18.             elseif($row['Null'] == 'YES' AND is_null($row['Default'])) $d = "default NULL";   
  19.             else $d='';   
  20.   
  21.             if($row['Null'] == 'NO'$n ='NOT NULL';   
  22.             else $n='';   
  23.   
  24.             $xx ="ALTER TABLE `".$tname."` MODIFY `".$row['Field']."` ".$row['Type']." $x $n $d ".$row['Extra']."";   
  25.             mysql_query($xx);   
  26.             //echo $xx."\n";   
  27.         }   
  28.     }   
  29. }   
  30. ?>  


 


抱歉,由于没有上传相关代码高亮的样式表,所以代码显示有点垃圾,复制下来用吧。


还有最好是用命令行跑吧,如果你数据量大,web执行是必定有障碍的。

标签: mysql, php

添加新评论 »

captcha
请输入验证码