日期:2014-05-16  浏览次数:20861 次

mysql 几个问题
1、mysql数据库从5.0升级到5.5导致一个表不能写入 同一个语句用5.0就可以写进去

Client Library error:
  Error Code: 1264;
  Out of range value for column 'IP' at row 1

语句如下
insert into tbl(DevID, EnterConf, QuitConf, ConfName, ConfID, IP, DevType) VALUES ('11000000000000000029000820060500', 1326174285, 0, 'tpkt', '', 2886787684, 2)

即便我把IP 改成0也写不进去

表结构如下

SerialID为 主索引 unique

字段 类型 空 默认值
SerialID int(11) no <auto_increment>
DevID varchar(37} no  
EnterConf int(11) no
QuitConf int(11) yes
ConfName varchar(129) no
ConfID varchar(33) no  
IP int(11) no
DevType int(2) no



另外这个IP int(11) 我拼接sql语句时应该用sprintf( %u ....) 还是sprintf( %d......),我觉得应该是%u 

2、数据库在多用户操作时老是会卡死,请问我如何判断connection出现错误呢,出现错误我重新连接会不会解决卡死的问题

------解决方案--------------------
1。 2886787684这个已经大于了有符号int
2. 是否是应为表锁造成的,show create table tbname贴出来看看表引擎 ,索引
------解决方案--------------------
引用INT[(M)] [UNSIGNED] [ZEROFILL] 

A normal-size integer. The signed range is -2147483648 to 2147483647. The unsigned range is 0 to 4294967295.