fetched命令代替1条记录,可能的原因是:update表没有PK或行标识符,记录已被另一个用户更改/删除,
执行时
SingleTestRunADQuery.Append();
SingleTestRunADQuery.FieldByName('run_id').Value := StartRecordingButton.Tag;
SingleTestRunADQuery.FieldByName('ph_value').Value := FloatToStr(ph_reading);
SingleTestRunADQuery.FieldByName('conductivity_value').Value := conductivity_reading;
SingleTestRunADQuery.FieldByName('cod_value').Value := cod_reading;
SingleTestRunADQuery.Post();在……上面
mysql> describe measurements;
+------------------------+-----------+------+-----+-------------------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------------------+-----------+------+-----+-------------------+-------+
| run_id | int(11) | NO | MUL | NULL | |
| measurement_time_stamp | timestamp | NO | PRI | CURRENT_TIMESTAMP | |
| ph | float | NO | | NULL | |
| conductivity | float | NO | | NULL | |
| cod | float | NO | | NULL | |
+------------------------+-----------+------+-----+-------------------+-------+
5 rows in set (0.03 sec)如您所见,这个表确实有一个PK。此外,该程序是单线程的,只有一个副本正在运行,因此没有其他人正在更新。
我将SingleTestRunADQuery.MasterFields=run_id and IndexFieldNames=run_id设置为表的PK,它包含所有测试运行的摘要。第二个表保存了在测试期间所做的测量,run_id给出了一个测试运行的所有测量值(我只是在tiemstamp上添加了PK以消除此错误,但它没有工作,而且可以删除。
如果有帮助,下面是主数据源:
mysql> describe test_runs;
+------------------+-------------+------+-----+-------------------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------------+-------------+------+-----+-------------------+----------------+
| run_id | int(11) | NO | PRI | NULL | auto_increment |
| start_time_stamp | timestamp | NO | | CURRENT_TIMESTAMP | |
| end_time_stamp | timestamp | YES | | NULL | |
| description | varchar(64) | YES | | NULL | |
+------------------+-------------+------+-----+-------------------+----------------+
4 rows in set (0.05 sec)你知道怎么回事吗?
Update @ mj2008指出,有些字段有不同的名称。这是出于历史原因(我仍然在尝试一些东西&还不想改变),hoever,这些都是通过查询来调整的:
SELECT run_id,
measurement_time_stamp,
ph as ph_value,
conductivity as conductivity_value,
cod as cod_value
FROM photo_catalytic.measurements
ORDER BY measurement_time_stamp DESC发布于 2013-03-11 09:35:23
我不确定将时间戳字段作为主键是否正确。它将在每一个更新上自动变化。
发布于 2018-04-27 19:30:04
通过“字段编辑器”选项签出查询组件的TFields属性。检查“键字段”是否将ProviderFlags.pfInKey属性设置为true。
这一点今天适用于FireDac组件。
发布于 2021-12-03 19:09:24
您应该按照以下方式更改连接属性:尝试将UpdateOptions.RefreshMode设置为rmManual。
https://stackoverflow.com/questions/15332885
复制相似问题