最大的问题:mysql没有存储我通过PHP告诉他的信息
示例(此req是查询之前的回显):
INSERT INTO serveur (GSP_nom , IPserv, port, tickrate, membre, nomPays, finContrat, type, jeux, slot, ipClient, email)
VALUES ( 'ckras', '88.191.88.57', '37060', '100' , '', 'Allemagne','20110519', '2', '4','99' ,'82.220.201.183','foo@foo.com');
但是在MySQL上我有:
403 ckras 88.191.88.57 32767 100 Allemagne 20110519 1 2010-04-25 00:51:47 2 4 99 82.220.201.183 foo@foo.com
端口:37060(正确的值)//// 32767(MySQL的药物?)
任何帮助都会受到赞赏,我比卡住更糟糕,而且我已经****了。
PS:*据我所知,mysql上没有触发器/ 端口上没有控制器,这意味着我无法修改“端口”值
并且此脚本在80%的时间内都有效(似乎只要用户输入端口> = 30000就会导致该错误),用户今天首先向我报告此错误并且脚本自从运行以来3个月*
由于
答案 0 :(得分:3)
您可能正在使用smallint
属性的port
数据类型。此数据类型的最大值为32767
。
事实上,我已经复制了你的问题:
CREATE TABLE a(a smallint);
Query OK, 0 rows affected (0.09 sec)
INSERT INTO a VALUES (37060);
Query OK, 1 row affected, 1 warning (0.02 sec)
SELECT * FROM a;
+-------+
| a |
+-------+
| 32767 |
+-------+
1 row in set (0.00 sec)
您只需使用更大的数据类型,例如mediumint
或int
。
进一步阅读:
答案 1 :(得分:1)
不久前我遇到过类似的问题,我不小心在一个收到很大价值的字段中使用了tinyint,你应该检查你正在使用的字段类型。另外,我建议如果问题仍然存在,请尝试以字符串形式获取数据。
还有一些方法可以尝试跟踪问题,尝试检查MySQL中的日志是否存在任何可能的错误,或者重写将数据插入MySQL的函数,有时最小的错误(通常难以发现)可能会破坏否则很棒的软件。