/ / MySQL Batchupdate () с ON DUPLICATE KEY UPDATE - Java, mysql, пролет, партида актуализации

MySQL Batchupdate () с ON DUPLICATE KEY UPDATE - Java, mysql, пролет, партида актуализации

Използвам batchUpdate() за да вмъкнете няколко записа в таблица. Според изискването, ако има дублираща се стойност за първичен ключ, докато го вмъквате, трябва да се актуализира с последните получени данни, затова се опитвах да го използвам ON DUPLICATE KEY UPDATE в INSERT изявление. Най- ON DUPLICATE KEY UPDATE работи добре, когато използвам единична вложка, но дава грешка, когато я използвам batchupdate() за същата заявка. Грешката е, както следва:

Тестова кутия: testVehicleTracking (com.em.ert.test.TrackingServiceTest): причини грешка PreparedStatementCallback; лоша SQL граматика [INSERT IN test_tracking (sino, material_id, material_type, vehicle_position, rundown_num, msg_type, msg_status, msg_timestamp) VALUES (?,?,?,?,?,?,?,?) ВЪРХУ ДУПЛИКАТ КЛЕ АКТУАЛИЗАЦИЯ]; вложеното изключение е java.sql.BatchUpdateException: Имате грешка в SQL синтаксиса; проверете ръководството, което съответства на версията на сървъра MySQL, за да се използва правилният синтаксис в близост до линия "1"

Аз не получавам защо ON DUPLICATE KEY UPDATE не работи с batchupdate (). В идеалния случай това би трябвало, тъй като в работата няма нищо друго, доколкото виждам.

Какво трябва да правя за постигането на това?

Отговори:

2 за отговор № 1

Липсва присвояване на колона след На клауза DUPLICATE KEY UPDATE.

от Ръководство за MySQL:

13.2.5. INSERT Синтаксис

INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]
[INTO] tbl_name [(col_name,...)]
{VALUES | VALUE} ({expr | DEFAULT},...),(...),...
[ ON DUPLICATE KEY UPDATE
col_name=expr
[, col_name=expr] ... ]

13.2.5. INSERT Синтаксис
13.2.5.3. ВЪВЕЖДАНЕ ... ВЪРХУ АКТУАЛИЗИРАНЕ НА КЛЮЧА В ДУПЛИКАТ Синтаксис