Убедитесь, что ваша существующая база данных SQLite объявляет целочисленные первичные ключи, используя только «INTEGER» (дословно), а не «int» или «int16», или любые другие возможности для объявления целого числа, которое распознает SQLite.
Я столкнулся с сопутствующей проблемой при импорте базы данных SQLite в Adobe AIR (которая имеет общую кодовую базу с Goodle и Mozilla и другими членами консорциума, IIRC). Мой PK был определен как "int" (дословно). SQLite обрабатывает первичные ключи «INTEGER» иначе, чем первичные ключи «int», «INT» или «int16» и т. Д.
Документировано здесь: http://www.sqlite.org/datatypes.html
Первичный ключ INTEGER обрабатывается SQLite как синоним для RowId. Любой другой тип типа int аналогичен стандартному столбцу, и для стандартного столбца RowId не обязательно будет равен значению в столбце PK.
Однако Adobe и другая связанная подгруппа членов консорциума SQLite не реализовали это (документированное) поведение - для них любой / каждый целочисленный тип, используемый в качестве столбца PK, рассматривается как синоним для row id--, и их неспособность реализовать это различие может привести к ошибочным соединениям, когда в их реализацию импортируется существующая база данных SQLite, если существующая база данных использовала что-то отличное от «INTEGER» при объявлении своего целочисленного значения. введите первичные ключи.
P.S. Я обратил на это внимание Adobe и обсудил это ad nauseam в списке рассылки SQLite и на форуме Adobe AIR. Adobe написала мне, что они документируют свое отклонение от «стандартного» поведения SQLite, но оставляют все как есть, поэтому я считаю, что Android также будет отличаться от документированного поведения SQLite в этом отношении.
P.P.S. Похоже, что эта подгруппа членов консорциума либо не представляла возможность импорта базы данных (то есть они предполагали, что база данных будет всегда создаваться заново через их интерфейс), либо просто игнорировала это (по общему признанию странное) исключительное поведение в SQLite.
P.P.P.S. Эта таблица, например, из базы данных, которую использует OP, будет возвращать ложные результаты, когда участвует в соединениях в столбце [stop_id], если она прикреплена реализацией SQLite, которая не реализует «стандартный» исключительный INTEGER / int (et al) поведение, но обрабатывает любой / каждый тип int при использовании с PK в качестве синонима для rowid:
CREATE TABLE mt_stop (
stop_id int NOT NULL PRIMARY KEY ASC,
stop_lat real NOT NULL CHECK (stop_lat >= -90 AND stop_lat <= 90),
stop_lon real NOT NULL CHECK (stop_lon >= -180 AND stop_lon <= 180),
stop_name varchar (120) DEFAULT 'Unknown'
)