备份了再恢复导入,就出现这个问题,

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

备份后,再做恢复出现这个错误码无法恢复,怎么办?

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 ) )

回答:
按以上代码修改确实可行,谢谢朋友指点!

此问题捆扰我半年,现在解决了,mydream 我的偶像

我怎么看不见帖子?我也有此问题啊。

2 楼原帖
在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

谢谢管理员,我试一下,如有问题还得再麻烦。