我正在使用 SlashDB 在 MySQL 后端上分层 REST 接口。大多数情况下,我通过“SQL Pass-thru”功能定义查询。我们正在使用这个系统来记录来自各个测试站的测试数据。
将测试数据发送到数据库时,一旦 URL 超过一定长度(大约 2K 的数据),SlashDB 似乎会阻塞。返回的错误是“502”,这很奇怪,因为 URI 太长通常会返回“414”。当我直接在 MySQL 中尝试查询时,没有问题。
这是表定义:
CREATE TABLE `test_result` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`test_instance_id` bigint(20) unsigned NOT NULL,
`test_instance_test_station_id` varchar(15) NOT NULL,
`test_instance_unit_sn` varchar(30) NOT NULL,
`test_instance_contact_address_id` int(2) NOT NULL,
`testStep` varchar(45) DEFAULT NULL,
`testData` blob,
`externalDataLink` text,
PRIMARY KEY (`id`),
KEY `fk_test_result_test_instance1_idx` (`test_instance_id`,`test_instance_test_station_id`,`test_instance_unit_sn`,`test_instance_contact_address_id`),
CONSTRAINT `fk_test_result_test_instance1` FOREIGN KEY (`test_instance_id`, `test_instance_test_station_id`, `test_instance_unit_sn`, `test_instance_contact_address_id`) REFERENCES `test_instance` (`id`, `test_station_id`, `unit_sn`, `contact_address_id`) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8
这是 URL(大数据被截断):
/post-test-result/testId/116/locationId/99/stationId/BO-01/sn/991807000003/stepName/test2/testData/[这里有2K的数据]/dataUrl/bye2.json?limit=29
通过“SQL Pass-thru”定义的查询:
插入 test_result (test_instance_id, test_instance_contact_address_id, test_instance_test_station_id, test_instance_unit_sn, testStep, testData, externalDataLink) 值 (:testId, :locationId, :stationId, :sn, :stepName, :testData, :dataUrl);
任何人都可以阐明任何观点吗?