mysql 主键 int 长度_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>

e7ce419cf2d6ad34d01da2ceb8829eed.png

微信 赏一包辣条吧~

023a57327877fb4402bcc76911ec18ea.png

支付宝 赏一听可乐吧~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值