Mysql int类型长度有关问题 这个有关问题让小弟我狠匪夷所思

Mysql int类型长度问题 这个问题让我狠匪夷所思

前言:mysql int类型(M)括号中填的数字是 显示宽度 而不是列的长度 (PS:网上看到的)

我数据库中  

int(10)作为主键列

当数据添加到 Duplicate entry ‘4770549’ for key ‘PRIMARY’

4770549 就添加不进去了

错误提示: org.hibernate.AssertionFailure: null id in com.zqkj.entity.StatExitModel entry (don’t flush the Session after an exception occurs)

我一看org.hibernate.AssertionFailure 异常  

要么就是字段类型不匹配、要么是有关键字、要么是长度不够

我这程序跑三个月了 前两个我就排除了 那就剩下长度问题了

一共三个字段 一个主键 一个时间 一个UID UID是varchar我设置了255(hibernate建表默认的 我也没改) 

那就剩主键了 然后我把10改成20 就可以正常运行了 求大神指导 这是什么情况



主键当然不能重复添加了

简单说 就是(M)忽略吧 一点用没有 这个就是个显示长度的问题 存储长度是int 4字节




主键是自动增长不需要添加的,会报错的。




show create table 贴出来以供分析。

INT可以支持到 2147483647 哪怕是 INT(1) 也同样。




建议楼主同样做如下测试,应该不是INT字段长度的问题。感觉上应该在程序端出问题了。 你可以打开一般查询日志做跟踪,看到底程序提交到数据库的语句是什么。

引用mysql> CREATE TABLE `tb_statistic_exit` (

-> `id` int(20) NOT NULL AUTO_INCREMENT,

-> `uid` varchar(500) NOT NULL,

-> `visitTime` datetime DEFAULT NULL,

-> `onlineTime` varchar(500) DEFAULT NULL,

-> PRIMARY KEY (`id`),

-> KEY `idx_uid_id` (`uid`(333))

-> ) ENGINE=MyISAM AUTO_INCREMENT=4792763 DEFAULT CHARSET=utf8;

Query OK, 0 rows affected (0.11 sec)

mysql> insert into `tb_statistic_exit` (`uid`) values (‘asd’);

Query OK, 1 row affected (0.00 sec)

mysql> insert into `tb_statistic_exit` (`uid`) values (‘asd1’);

Query OK, 1 row affected (0.00 sec)

mysql> insert into `tb_statistic_exit` (`uid`) values (‘asd2’);

Query OK, 1 row affected (0.00 sec)

mysql> select id,uid from `tb_statistic_exit`;

+———+——+

| id | uid |

+———+——+

| 4792763 | asd |

| 4792764 | asd1 |

| 4792765 | asd2 |

+———+——+

3 rows in set (0.00 sec)

mysql>

Mysql int类型长度有关问题 这个有关问题让小弟我狠匪夷所思

相关文章:

你感兴趣的文章:

标签云: