我正在使用MYSQL C API的预准备语句,我遇到截断问题.mysql_stmt_fetch()总是回来MYSQL_DATA_TRUNCATED,我不明白为什么.有人可以告诉我数据被截断的原因,以帮助我解决这个问题吗?我能想到的唯一原因是我的缓冲变量不是正确的类型,但我认为它们是正确的类型.如果您有兴趣,我使用的代码如下.我还展示了我的表及其结构的副本,我直接从MYSQL客户端的命令中获取.
关于代码的一些注意事项:
我已修改它以打印出值,即使它返回截断的数据.当我这样做时,第一个字段似乎正确打印,但浮点字段和日期时间字段是乱码.此外,它似乎读取正确的行数.
大多数代码都是错误检查各种函数调用.这些错误检查都没有被触发 - 或者至少没有一个像你期望的那样打印出消息.唯一的错误指示是MYSQL_DATA_TRUNCATEDfetch调用返回的值.
描述测量表:
+------------+----------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------+----------+------+-----+---------+-------+
| nodeId | int(11) | NO | PRI | NULL | |
| recordtime | datetime | NO | PRI | NULL | |
| slevel | float | YES | | NULL | |
+------------+----------+------+-----+---------+-------+
Run Code Online (Sandbox Code Playgroud)
目前的测量内容表:
+--------+---------------------+--------+
| nodeId | recordtime | slevel |
+--------+---------------------+--------+
| 1 | 2015-09-22 …Run Code Online (Sandbox Code Playgroud)