Discuz!官方免费开源建站系统

 找回密码
 立即注册
搜索

[转换] 为什么中文用户名转换到myssql里面后变成空值了?

[复制链接]
xxmmxx 发表于 2008-10-5 21:43:39 | 显示全部楼层 |阅读模式
我是从dvbbs 8.2.0 转到 discuz 6.1 第一步就失败了。
提示:
SQL: INSERT INTO mydata.uc_members (uid, username, password, email, myid, myidkey, regip, regdate, lastloginip, lastlogintime, salt) VALUES ( '143', '月晨', '335771cef5fbe88fcba1911aeayi77f8', '15678@qq.com', '', '', '118.93.19.104', '1195204826', '118.93.19.104', '1195204826', '4458ef');
Error: Duplicate entry '' for key 2
Errormsg.: 字段值重复,入库失败
Errno.: 1062

用phpmyadmin查看了下数据库,用户表只有一条记录,用户名为空。而实际上原来的数据库中这个用户是中文名。
所以在插入第二个中文用户时,已经存在一条用户名为空的记录了,所以显示字段值重复。

还有uc中lastloginip这个字段是不是字符类型为int,是不是错了?

这是怎么回事呢?

[ 本帖最后由 xxmmxx 于 2008-10-6 14:43 编辑 ]
回复

使用道具 举报

beijing200808 发表于 2008-10-6 09:17:50 | 显示全部楼层
确定一下转换程序对应的字段,是不是跟你的dvbbs 8.2.0的字段是否一致
回复

使用道具 举报

 楼主| xxmmxx 发表于 2008-10-6 16:23:37 | 显示全部楼层
是一致的啊:
SQL: INSERT INTO mydata.uc_members (uid, username, password, email, myid, myidkey, regip, regdate, lastloginip, lastlogintime, salt) VALUES ( '143', '月晨', '335771cef5fbe88fcba1911aeayi77f8', '15678@qq.com', '', '', '118.93.19.104', '1195204826', '118.93.19.104', '1195204826', '4458ef')

这次语句是对的啊,为什么执行后到数据库里,用户名就变空了呢

注:myssql是utf-8编码的,dvbbs 8.2.0 只有一种编码:gb2312

[ 本帖最后由 xxmmxx 于 2008-10-6 16:37 编辑 ]
回复

使用道具 举报

桃子(小敏) 发表于 2008-10-6 17:02:34 | 显示全部楼层
原论坛是什么字符集的,现在只能安装相同字符集的dz,然后开始重新转换
回复

使用道具 举报

 楼主| xxmmxx 发表于 2008-10-9 13:56:31 | 显示全部楼层
myssql是utf-8编码的,dvbbs 8.2.0 只有一种编码:gb2312
回复

使用道具 举报

桃子(小敏) 发表于 2008-10-9 14:10:59 | 显示全部楼层
重新安装gbk的ucenter和discuz6.1,安装ucenter和discuz6.1时,先把根目录下的config.inc.php中$dbcharset = ''设置为gbk,再运行install进行安装
安装文件下载:
https://discuz.dismall.com/downloads/
再使用最新的转换程序进行转换,转换程序下载及使用教程见本版置顶帖xconvert1.3.0下载
回复

使用道具 举报

 楼主| xxmmxx 发表于 2008-10-9 17:28:22 | 显示全部楼层
谢谢你了,不能安装utf-8版的uc和discuz吗?服务器上的mysql默认编码为utf-8的

对了,我自己写了个文件,保存为utf-8编码文件的话运行成功,如果是保存为ANSI编码的话同上面一样,中文用户名变成空了。:
<?
require_once './include/common.inc.php';
require_once './config.inc.php';

$db['uc'] = new db_mysql;
$db['uc']->connect($uc_dbhost, $uc_dbuser, $uc_dbpw, $uc_dbname);

$db['uc']->query("INSERT INTO mydata.uc_members (uid, username, password, email, myid, myidkey, regip, regdate, lastloginip, lastlogintime, salt) VALUES ( '143', '月晨', '335771cef5fbe88fcba1911aeayi77f8', '15678@qq.com', '', '', '118.93.19.104', '1195204826', '118.93.19.104', '1195204826', '4458ef')");
?>
回复

使用道具 举报

 楼主| xxmmxx 发表于 2008-10-9 23:08:38 | 显示全部楼层
谢谢热心的桃子
问题解决了,还是编码的问题。
加上下面这一行了,建议官方的转换程序加上吧:
mysql_query("set names gbk");

不过有些特殊的字插入不成功,还在测试中

[ 本帖最后由 xxmmxx 于 2008-10-10 08:29 编辑 ]
回复

使用道具 举报

 楼主| xxmmxx 发表于 2008-10-10 08:52:01 | 显示全部楼层
哈哈,终于完美解决了
并且明白了原因所在,收获匪浅!
回复

使用道具 举报

beijing200808 发表于 2008-10-10 11:27:10 | 显示全部楼层
在转换程序的include\db.class.php中有这一设置,只是不同的转换,可能编码各不相同,因此,转换的时候需要自行修改一下(编码不一致的情况)。以后我们把这一部分在界面上体现出来。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2025-9-16 16:25 , Processed in 0.097661 second(s), 14 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表