首页 > 数据库 > MySQL > 正文

MySql升级数据库没有升级遇到Your privilege table structure seems to

2024-07-24 12:39:27
字体:
来源:转载
供稿:网友

将下面的内容另存为文件,放到服务器上执行就可以了,遇到这样的问题往往是升级的数据库,但把旧数据库所有的库全部考过来,而不是把用户库考来造成的.

错误提示如下:

Warning: Your privilege table structure seem to be older than this MySQL version! 

Please run the script mysql_fix_privilege_tables that should be included in your MySQL server distribution to solve this problem!

  1. <?php   
  2.     $dbhost = 'localhost';   
  3.     $dbuser = 'root';   
  4.     $dbpw = 'password';   
  5.     $db = new dbstuff;   
  6.     $db->connect($dbhost$dbuser$dbpw'mysql');   
  7.     unset($dbhost$dbuser$dbpw);   
  8.     $match = explode('.'$db->version());   
  9.     $mysql_verson = sprintf('%d%02d%02d'$match[0], $match[1], intval($match[2]));   
  10.     $mysql_fields = array();   
  11.     $sql = 'SHOW FULL FIELDS FROM user';   
  12.     $query = $db->query($sql);   
  13.     while($mysql = $db->fetch_array($query)) {   
  14.         $mysql_fields[] = $mysql['Field'];   
  15.     }   
  16.     if($mysql_verson >= 40002) {   
  17.         if(!in_array('Show_db_priv'$mysql_fields)) {   
  18.             $db->query("ALTER TABLE user add `Show_db_priv` enum('N','Y') NOT NULL default 'N' AFTER `Alter_priv`;");   
  19.         }   
  20.         if(!in_array('Super_priv'$mysql_fields)) {   
  21.             $db->query("ALTER TABLE user add `Super_priv` enum('N','Y') NOT NULL default 'N' AFTER `Show_db_priv`;");   
  22.         }   
  23.         if(!in_array('Create_tmp_table_priv'$mysql_fields)) {   
  24.             $db->query("ALTER TABLE user add `Create_tmp_table_priv` enum('N','Y') NOT NULL default 'N' AFTER `Super_priv`;");   
  25.         }   
  26.         if(!in_array('Lock_tables_priv'$mysql_fields)) {   
  27.             $db->query("ALTER TABLE user add `Lock_tables_priv` enum('N','Y') NOT NULL default 'N' AFTER `Create_tmp_table_priv`;");   
  28.         }   
  29.         if(!in_array('Execute_priv'$mysql_fields)) {   
  30.             $db->query("ALTER TABLE user add `Execute_priv` enum('N','Y') NOT NULL default 'N' AFTER `Lock_tables_priv`;");   
  31.         }   
  32.         if(!in_array('Repl_slave_priv'$mysql_fields)) {   
  33.             $db->query("ALTER TABLE user add `Repl_slave_priv` enum('N','Y') NOT NULL default 'N' AFTER `Execute_priv`;");   
  34.         }   
  35.         if(!in_array('Repl_client_priv'$mysql_fields)) {   
  36.             $db->query("ALTER TABLE user add `Repl_client_priv` enum('N','Y') NOT NULL default 'N' AFTER `Repl_slave_priv`;");   
  37.         }   
  38.     }   
  39.     if($mysql_verson >= 50001) {   
  40.         if(!in_array('Create_view_priv'$mysql_fields)) {   
  41.             $db->query("ALTER TABLE user add `Create_view_priv` enum('N','Y') NOT NULL default 'N' AFTER `Repl_client_priv`;");   
  42.         }   
  43.         if(!in_array('Show_view_priv'$mysql_fields)) {   
  44.             $db->query("ALTER TABLE user add `Show_view_priv` enum('N','Y') NOT NULL default 'N' AFTER `Create_view_priv`;");   
  45.         }   
  46.     }   
  47.     if($mysql_verson >= 50003) {   
  48.         if(!in_array('Create_routine_priv'$mysql_fields)) {   
  49.             $db->query("ALTER TABLE user add `Create_routine_priv` enum('N','Y') NOT NULL default 'N' AFTER `Show_view_priv`;");   
  50.         }   
  51.         if(!in_array('Alter_routine_priv'$mysql_fields)) {   
  52.             $db->query("ALTER TABLE user add `Alter_routine_priv` enum('N','Y') NOT NULL default 'N' AFTER `Create_routine_priv`;");   
  53.         }   
  54.         if(!in_array('Create_user_priv'$mysql_fields)) {   
  55.             $db->query("ALTER TABLE user add `Create_user_priv` enum('N','Y') NOT NULL default 'N' AFTER `Alter_routine_priv`;");   
  56.         }   //Vevb.com 
  57.     }   
  58.     echo '完成';   
  59.     class dbstuff {   
  60.         var $querynum = 0;   
  61.         function connect($dbhost$dbuser$dbpw$dbname = ''$pconnect = 0) {   
  62.             if($pconnect) {   
  63.                 if(!@mysql_pconnect($dbhost$dbuser$dbpw)) {   
  64.                     $this->halt('Can not connect to MySQL server');   
  65.                 }   
  66.             } else {   
  67.                 if(!@mysql_connect($dbhost$dbuser$dbpw)) {   
  68.                     $this->halt('Can not connect to MySQL server');   
  69.                 }   
  70.             }   
  71.             if($this->version() > '4.1') {   
  72.                 global $charset$dbcharset;   
  73.                 if(!$dbcharset && in_array(strtolower($charset), array('gbk''big5''utf-8'))) {   
  74.                     $dbcharset = str_replace('-'''$charset);   
  75.                 }   
  76.                 if($dbcharset) {   
  77.                     mysql_query("SET character_set_connection=$dbcharset, character_set_results=$dbcharset, character_set_client=binary");   
  78.                 }   
  79.                 if($this->version() > '5.0.1') {   
  80.                     mysql_query("SET sql_mode=''");   
  81.                 }   
  82.             }   
  83.             if($dbname) {   
  84.                     mysql_select_db($dbname);   
  85.             }   
  86.         }   
  87.    
  88.         function select_db($dbname) {   
  89.             return mysql_select_db($dbname);   
  90.         }   
  91.         function fetch_array($query$result_type = MYSQL_ASSOC) {   
  92.             return mysql_fetch_array($query$result_type);   
  93.         }   
  94.    
  95.         function query($sql) {   
  96.             if(!($query = mysql_query($sql))) {   
  97.                 $this->halt('MySQL Query Error'$sql);   
  98.             }   
  99.             return $query;   
  100.         }   
  101.             function version() {   
  102.             return mysql_get_server_info();   
  103.         }   
  104.         function halt($message =''$sql ='') {   
  105.             echo $message.$sql;   
  106.             exit;   
  107.         }   
  108.     }   
  109. ?>

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表