|
|
对一些非常规的论坛用户名,即含有 . - _ ? 全角字母 !这些字符的,会报错。
如导入时提示:
ERROR 1062 (23000) at line 406: Duplicate entry '......' for key 'username'
上面的 ...... 是用户名(discuz程序应该对用户名取名进行限制一下)
困惑中,难道非得清理这些用户?
后续进展:
目前解决办法:
先在旧数据库中删除 2011? 和 Cappuccīnó 这两个用户名(这是针对我的论坛数据),导出utf8编码的sql文件后,修改 bbs.sql 文件中的DEFAULT CHARSET=gbk 改为 DEFAULT CHARSET=utf8,
sed -i 's/DEFAULT CHARSET=gbk/DEFAULT CHARSET=utf8/g' bbs.sql
经检查,sql文件中以下几个表的建表语句中 COMMENT 后有乱码 (备注一下,现空间已做处理,以后不再关注这个)
pre_security_evilpost
pre_security_eviluser
pre_security_failedlog
如 `id` int(10) unsigned NOT NULL AUTO_INCREMENT primary key COMMENT '乱码部分',
删除 COMMENT 及乱码部分,与官方安装文件的建表语句一致,顺利导入。
- alter table pre_security_evilpost modify `pid` int(10) unsigned NOT NULL;
- alter table pre_security_evilpost modify `tid` mediumint(8) unsigned NOT NULL default '0';
- alter table pre_security_evilpost modify `type` tinyint(1) NOT NULL default '0';
- alter table pre_security_evilpost modify `evilcount` int(10) NOT NULL default '0';
- alter table pre_security_evilpost modify `eviltype` mediumint(8) unsigned NOT NULL default '0';
- alter table pre_security_evilpost modify `createtime` int(10) unsigned NOT NULL default '0';
- alter table pre_security_evilpost modify `operateresult` tinyint(1) unsigned NOT NULL default '0';
- alter table pre_security_evilpost modify `isreported` tinyint(1) NOT NULL default '0';
- alter table pre_security_eviluser modify `uid` int(10) unsigned NOT NULL;
- alter table pre_security_eviluser modify `evilcount` int(10) NOT NULL default '0';
- alter table pre_security_eviluser modify `eviltype` mediumint(8) unsigned NOT NULL default '0';
- alter table pre_security_eviluser modify `createtime` int(10) unsigned NOT NULL default '0';
- alter table pre_security_eviluser modify `operateresult` tinyint(1) unsigned NOT NULL default '0';
- alter table pre_security_eviluser modify `isreported` tinyint(1) NOT NULL default '0';
- alter table pre_security_failedlog modify `id` int(11) NOT NULL auto_increment;
- alter table pre_security_failedlog modify `reporttype` char(20) NOT NULL;
- alter table pre_security_failedlog modify `tid` int(10) unsigned NOT NULL default '0';
- alter table pre_security_failedlog modify `pid` int(10) unsigned NOT NULL default '0';
- alter table pre_security_failedlog modify `uid` int(10) unsigned NOT NULL default '0';
- alter table pre_security_failedlog modify `failcount` int(10) unsigned NOT NULL default '0';
- alter table pre_security_failedlog modify `createtime` int(10) unsigned NOT NULL default '0';
- alter table pre_security_failedlog modify `posttime` int(10) unsigned NOT NULL default '0';
- alter table pre_security_failedlog modify `delreason` char(255) NOT NULL;
- alter table pre_security_failedlog modify `scheduletime` int(10) unsigned NOT NULL default '0';
- alter table pre_security_failedlog modify `lastfailtime` int(10) unsigned NOT NULL default '0';
- alter table pre_security_failedlog modify `extra1` int(10) unsigned NOT NULL;
- alter table pre_security_failedlog modify `extra2` char(255) NOT NULL default '0';
复制代码
再导入旧网站web数据,上传discuzX 3.4升级文件,然后在三个配置中的 gbk 全改为utf8,更新mysql 连接密码(如果密码不变不用改)
一个小插曲,导入mysql 时会产生大量mysql log 日志文件,注意清理,不然可能会把 / 盘撑爆了,导致导入失败,整个运行速度极慢。 |
|