【发布时间】:2016-05-28 04:00:12
【问题描述】:
我刚刚在 Amazon Linux 实例中设置了 LAMP 服务器。一切正常,我与数据库的所有连接都运行良好。
但是我遇到了一个我无法解决的问题。我正在开发一个考试系统,我想给每个要参加考试的学生一个随机的 ID。我不需要有关学生的任何信息,因此我没有任何可以用作唯一标识符的相关字段。
$id_escuela=2;
$id_grupo=$_POST['grado'];
$id_eval=rand(1,9999999999);
$sql = "INSERT INTO pinion_evalua (id_eval,id_escuela,anio) VALUES (".$id_eval.",".$id_escuela.",".$id_grupo.")";
在我的本地服务器上一切正常,我每次都会得到随机数,但是当我将文件上传到亚马逊服务器时,我会遇到一个特定的数字 (2147483647),即使 rand 的结果不同.例如,我得到:
Error: INSERT INTO pinion_evalua(id_eval,id_escuela,anio) VALUES (4612160288,1,2)
Duplicate entry '2147483647' for key 'id_eval'
这怎么可能?我尝试删除随机部分并使用自动增量,但我仍然收到相同的数字。我什至尝试减小 int 的大小,但我仍然得到数字,即使它违反了该领域的规则。快把我逼疯了。
你们中的任何人都可以给我一些提示吗?
问候。
【问题讨论】:
-
我不懂 php,但看起来它与 stackoverflow.com/questions/15532635/… 相关
-
你不需要分配唯一的 id 。使用 id 字段作为主键并自动递增 true。
-
将 id_eval 字段设为 BigInt
-
我没有考虑 int 变量在 32 位系统中的限制。我很欣赏避免问题的提示。