Я столкнулся с этим очень странным поведением, когда я строю строку для обновления строки таблицы, например, такую:
sql = "UPDATE cosmetics SET trail = 4,color = '[blue]',doTrail = 0,trails = null,trailSeen = null,inventory = null,uuid = 'abcd' WHERE uuid = 'abcd'";
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.executeUpdate();
pstmt.close();
В перехвате попытки, и код работает нормально.
Моя проблема - все , но первый упомянутый столбец (ie, в данном случае trail) обновлен. Если я проверю таблицу из sqlite с помощью:
SELECT * FROM cosmetics WHERE uuid = 'abcd';
Возвращается
uuid|trail|doTrail|color|inventory|trails|trailSeen
abcd|0|0|[blue]|||
, где ранее было значение:
uuid|trail|doTrail|color|inventory|trails|trailSeen
abcd|0|1|[white]|||
Итак, doTrail был обновлен, и так был цвет, единственное, что не обновлялось, было следом. Я понятия не имею, почему это так, поэтому любая помощь будет высоко ценится.
Вот .schema cosmetics
CREATE TABLE cosmetics (uuid TEXT PRIMARY KEY, trail INTEGER, doTrail BOOLEAN, color TEXT DEFAULT "[white]", inventory TEXT, trails TEXT, trailSeen TEXT);
Я должен также упомянуть, если я скопирую и вставлю значение sql
непосредственно в терминал проблем нет, и таблица обновляется, как и ожидалось.