我有一些变量通过各种机器(通过php和其他bash脚本)传递,最终到达最后一台服务器。
我使用这些变量来填充mysql数据库条目。
一切正常,直到我尝试将其中一个变量连接在一起,导致输入完全错误的变量到数据库中。
这是变量到达脚本时的一个例子:
$4=48
$6=101216
如果我单独使用它们,脚本运行正常:
mysql --host=localhost --user=xxxx --password=xxxx db_name <<EOF
insert into db_table (uid, ts_id) values ('$4', '$6');
EOF
正如预期的那样,uid字段填充了48,而ts_id填充了101216
但是如果我尝试将它们连接起来用于第三个字段......
userID="$4";
trackID="$userID$6";
mysql --host=localhost --user=xxxx --password=xxxx db_name <<EOF
insert into db_table (uid, ts_id, track_id) values ('$4', '$6', '$trackID');
EOF
...而不是48101216被输入track_id字段我得到了8388607
是否有一些奇怪的数学运算或者这是否生成了错误代码?
我也试过像这样连接它们:
trackID=$4$6;
像这样:
trackID="$4$6"
就像这样:
insert into db_table (uid, ts_id, track_id) values ('$4', '$6', '$4$6');
但他们都会产生神秘的8388607 ??
即使每次运行时两个变量中的数字都不同,当我连接它时,我总是以8388607结束?
我做错了什么?
答案 0 :(得分:1)
track_id列的定义是什么?三字节整数允许的值范围为-8388608到+8388607。
答案 1 :(得分:1)
您应该查看数据库中的列定义,看它是否可以保存您要插入的值。