百分求助!mysql无法插入,解决后500分狂送. select count(*) as n from user where username = 'xxx...';用上面的语句检查一下 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这不一样吗?我打select count(*) from user where username = '灿烂涅磐'反回结果是0可插入十报错:java.sql.SQLException: Invalid argument value: Duplicate entry '灿烂涅磐' for key 2 SQL:INSERT INTO `user` ( `username`, `password`, `registertime`) VALUES ( '灿烂涅磐', '12345', '1091758978523');我确定表里没有username= '灿烂涅磐' 呵呵,这个问题呀.给你两个解决办法.第一个方法.设置默认字符集为GBK.第二个方法.设置 username 字段为 BINARY两种方法各有利弊吧.第一个方法. 在大多数情况是工作得都非常好.但英文半角y 与 ~ 字符无法正确区分例:mysql> SHOW GLOBAL VARIABLES LIKE 'character_set';+---------------+--------+| Variable_name | Value |+---------------+--------+| character_set | latin1 |+---------------+--------+1 row in set (0.00 sec)mysql> SELECT 'y' = '~';+-----------+| 'y' = '~' |+-----------+| 0 |+-----------+1 row in set (0.00 sec)mysql> SHOW GLOBAL VARIABLES LIKE 'character_set';+---------------+-------+| Variable_name | Value |+---------------+-------+| character_set | gbk |+---------------+-------+1 row in set (0.00 sec)mysql> SELECT 'y' = '~';+-----------+| 'y' = '~' |+-----------+| 1 |+-----------+1 row in set (0.00 sec)第二个方法.该用户名将会以严格的区分大小方式进行比较.同时如果使用 username LIKE 'A%' 之类的操作时.可能会返回不需要的结果就我的建议而言.是使用第一个方法 你的数据库user表中的字段有哪些。是不是id自段没有自动增张? 同意 shuixin13(犬犬(心帆)) ( ) 的第一个方法.设置默认字符集为GBK.插入记录可以使用 IGNORE 选项,这样就不会插入有同样值得primary/UNIQUE了,然后根据返回的纪录的多少,是0还是1判断是重复还是插入成功了的哈INSERT IGNORE INTO `user` ( `username`, `password`, `registertime`) VALUES ( '灿烂涅磐', '12345', '1091758978523'); 我目前默认字符集就是gbkVariable_name Value character_set gbk 一样会出现这个问题.这是为什么? 如果我的username字段设置为 BINARY我的程序可能会出现很多漏洞..因为我在程序里并没有做大小写检查,这样在匹配用户名上我怕... INSERT IGNORE INTO `user` ( `username`, `password`, `registertime`) VALUES ( '灿烂涅磐', '12345', '1091758978523');这样不好吗?通过返回记录数判断有没有插入成功! 那我先insert然后抓异常不一样吗?我想知道为什么明明表里不存在这个username的字段,我就不能插进去呢? 你的字符集已设置为 GBK然后在插入前搜索数据.也是不存在的.但是在插入时却出现重复键的问题?呵呵,不太可能的呀. 修复表REPAIR TABLE `user1` USE_FRM+-----------+--------+----------+----------------------------------------+| Table | Op | Msg_type | Msg_text |+-----------+--------+----------+----------------------------------------+| log.user1 | repair | warning | Number of rows changed from 0 to 51924 || log.user1 | repair | status | OK |+-----------+--------+----------+----------------------------------------+之后插入成功原因不明 select 的过程中中文乱码问题求教 MySQL server has gone away问题 mysql链接数据库 MYSQL重装 MySQL下如何给一个日期字段赋默认值 怎样把access里的.mdb数据库内容导入mysql里面啊? 数据类型! mysql c api 一问 ?关于linux下jdbc连接mysql问题请教 sqlite 如何简化sql语句。 如何修改mysql的默认字符集?--保证给分! 我是一个mysql的初学者,请教一个问题!
我打
select count(*) from user where username = '灿烂涅磐'反回结果是0
可插入十报错:java.sql.SQLException: Invalid argument value: Duplicate entry '灿烂涅磐' for key 2 SQL:INSERT INTO `user` ( `username`, `password`, `registertime`) VALUES ( '灿烂涅磐', '12345', '1091758978523');我确定表里没有username= '灿烂涅磐'
这个问题呀.
给你两个解决办法.第一个方法.设置默认字符集为GBK.第二个方法.设置 username 字段为 BINARY
两种方法各有利弊吧.第一个方法. 在大多数情况是工作得都非常好.
但英文半角y 与 ~ 字符无法正确区分
例:
mysql> SHOW GLOBAL VARIABLES LIKE 'character_set';
+---------------+--------+
| Variable_name | Value |
+---------------+--------+
| character_set | latin1 |
+---------------+--------+
1 row in set (0.00 sec)mysql> SELECT 'y' = '~';
+-----------+
| 'y' = '~' |
+-----------+
| 0 |
+-----------+
1 row in set (0.00 sec)mysql> SHOW GLOBAL VARIABLES LIKE 'character_set';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| character_set | gbk |
+---------------+-------+
1 row in set (0.00 sec)mysql> SELECT 'y' = '~';
+-----------+
| 'y' = '~' |
+-----------+
| 1 |
+-----------+
1 row in set (0.00 sec)
第二个方法.
该用户名将会以严格的区分大小方式进行比较.
同时如果使用 username LIKE 'A%' 之类的操作时.可能会返回不需要的结果
就我的建议而言.是使用第一个方法
INSERT IGNORE INTO `user` ( `username`, `password`, `registertime`) VALUES ( '灿烂涅磐', '12345', '1091758978523');
Variable_name Value
character_set gbk
一样会出现这个问题.这是为什么?
我的程序可能会出现很多漏洞..因为我在程序里并没有做大小写检查,这样在匹配用户名上我怕...
我想知道为什么明明表里不存在这个username的字段,我就不能插进去呢?
然后在插入前搜索数据.也是不存在的.
但是在插入时却出现重复键的问题?呵呵,不太可能的呀.
REPAIR TABLE `user1` USE_FRM+-----------+--------+----------+----------------------------------------+
| Table | Op | Msg_type | Msg_text |
+-----------+--------+----------+----------------------------------------+
| log.user1 | repair | warning | Number of rows changed from 0 to 51924 |
| log.user1 | repair | status | OK |
+-----------+--------+----------+----------------------------------------+之后插入成功
原因不明