Ошибка: ограничение UNIQUE не выполнено: gpkg_contents.identifier - PullRequest
0 голосов
/ 05 февраля 2020

Почему я получаю сообщение об ошибке «Ошибка: ограничение UNIQUE: gpkg_contents.identifier» при попытке:

UPDATE gpkg_contents SET identifier = 'labs' WHERE lower(table_name) = lower('labss') AND identifier = 'labss';

, хотя я не нарушаю это уникальное ограничение:

sqlite> select table_name,identifier from gpkg_contents ;
table_name  identifier
----------  ----------
dims        dims      
pol         pol       
parcel-lin  parcel-lin
parcel      parcel    
grid        grid      
bounds      bounds    
labss       labss     

установка идентификатора, отличного от 'labs', работает нормально. Например:

UPDATE gpkg_contents SET identifier = 'labs2' WHERE lower(table_name) = lower('labss') AND identifier = 'labss';

схема таблицы выглядит следующим образом:

sqlite> .schema gpkg_contents
CREATE TABLE gpkg_contents (table_name TEXT NOT NULL PRIMARY KEY,data_type TEXT NOT NULL,identifier TEXT UNIQUE,description TEXT DEFAULT '',last_change DATETIME NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ','now')),min_x DOUBLE, min_y DOUBLE,max_x DOUBLE, max_y DOUBLE,srs_id INTEGER,CONSTRAINT fk_gc_r_srs_id FOREIGN KEY (srs_id) REFERENCES gpkg_spatial_ref_sys(srs_id));

Файл базы данных sqlite

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...