2.61数据备份恢复出错!1208 GBK

2016-07-07 15:50 来源:www.chinab4c.com 作者:ecshop专家

2.61数据备份恢复出错!1208 GBK版本的后台备份无法恢复解决方法2.61数据备份恢复出错!1208 GBK版本的后台备份无法恢复:
出错信息为:
MySQL server error report:Array ( [0] => Array ( [message] => MySQL Query Error ) [1] => Array ( [sql] => CREATE TABLE `ecs_account_log` ( `log_id` mediumint(8) unsigned NOT NULL auto_increment, `user_id` mediumint(8) unsigned NOT NULL, `user_money` decimal(10,2) NOT NULL, `frozen_money` decimal(10,2) NOT NULL, `rank_points` mediumint(9) NOT NULL, `pay_points` mediumint(9) NOT NULL, `change_time` int(10) unsigned NOT NULL, `change_desc` varchar(255) NOT NULL, `change_type` tinyint(3) unsigned NOT NULL, PRIMARY KEY (`log_id`), KEY `user_id` (`user_id`) ) ENGINE=MyISAM DEFAULT CHARSET=gbk DEFAULT CHARSET=utf8 ) [2] => Array ( [error] => Conflicting declarations: 'CHARACTER SET gbk' and 'CHARACTER SET utf8' ) [3] => Array ( [errno] => 1302 ) )
查看了一下,最终找到原因:
在admin\database.php中的sql_import函数中,在判断建表时缺 DEFAULT CHARSET=gbk 时,判断条件及增加语句都是utf8,所以只要把
if ((strpos($ret[$i], 'CREATE TABLE') !== false) && (strpos($ret[$i], 'DEFAULT CHARSET=utf8')=== false))
{
/* 建表时缺 DEFAULT CHARSET=utf8 */
$ret[$i] = $ret[$i] . ' DEFAULT CHARSET=gbk';
}

if ((strpos($ret[$i], 'CREATE TABLE') !== false) && (strpos($ret[$i], 'DEFAULT CHARSET=utf8')!== false))
{
$ret[$i] = str_replace('DEFAULT CHARSET=utf8', '', $ret[$i]);
}
改为:
if ((strpos($ret[$i], 'CREATE TABLE') !== false) && (strpos($ret[$i], 'DEFAULT CHARSET=gbk')=== false))
{
/* 建表时缺 DEFAULT CHARSET=gbk */
$ret[$i] = $ret[$i] . ' DEFAULT CHARSET=gbk';
}

if ((strpos($ret[$i], 'CREATE TABLE') !== false) && (strpos($ret[$i], 'DEFAULT CHARSET=gbk')!== false))
{
$ret[$i] = str_replace('DEFAULT CHARSET=gbk', '', $ret[$i]);
}




注:建议你打开SQL备份文件,搜索 ecs_admin_action 数据表;

如果看到 ENGINE=MyISAM DEFAULT CHARSET=gbk DEFAULT CHARSET=utf8 ;

请根据你的默认编码改为下面其中一种方式:

1、ENGINE=MyISAM DEFAULT CHARSET=gbk
2、ENGINE=MyISAM DEFAULT CHARSET=utf8


我出现了这个问题 这个是我在网上找到的答案.....不知道是不是正确的