Итак, у меня проблема с созданием конкретной таблицы с помощью плагина SQLitePorter.
У меня есть файл в папке с активами initDB.sql, внутри которого у меня есть строка SQL:
CREATE TABLE IF NOT EXISTS `localListItems` (
`id` INTEGER NOT NULL ,
`quantity` TINYINT(2) NOT NULL ,
`checked` TINYINT(1) NOT NULL DEFAULT 0 ,
`listId` INTEGER NOT NULL ,
`itemId` INTEGER NOT NULL ,
PRIMARY KEY (`id`),
KEY `fkIdx_26` (`listId`),
CONSTRAINT `FK_26`
FOREIGN KEY `fkIdx_26` (`listId`)
REFERENCES `localLists` (`id`)
ON DELETE CASCADE,
KEY `fkIdx_30` (`itemId`),
CONSTRAINT `FK_30`
FOREIGN KEY `fkIdx_30` (`itemId`)
REFERENCES `localItems` (`id`)
ON DELETE CASCADE
);
Минимизированная версия:
CREATE TABLE IF NOT EXISTS `localListItems` ( `id` INTEGER NOT NULL , `quantity` TINYINT(2) NOT NULL , `checked` TINYINT(1) NOT NULL DEFAULT 0 , `listId` INTEGER NOT NULL , `itemId` INTEGER NOT NULL , PRIMARY KEY (`id`), KEY `fkIdx_26` (`listId`), CONSTRAINT `FK_26` FOREIGN KEY `fkIdx_26` (`listId`) REFERENCES `localLists` (`id`) ON DELETE CASCADE, KEY `fkIdx_30` (`itemId`), CONSTRAINT `FK_30` FOREIGN KEY `fkIdx_30` (`itemId`) REFERENCES `localItems` (`id`) ON DELETE CASCADE);
, которая минимизирована в документе и поэтому занимает одну строку для предотвращения экранирования ошибок '\ n'
Я вызываю этот файл, используяследующий машинописный код:
this.httpClient.get('assets/initDB.sql', { responseType: 'text' })
.subscribe((sql:any) => {
this.sqlitePorter.importSqlToDb(this.database, sql)
.then(data => {
this.databaseReady.next(true);
this.storage.set('database_filled', this.databaseVersionControl);
})
.catch(e => console.log(e));
});
Все остальные таблицы вставляются по мере необходимости (не показано выше), однако приведенный выше SQL отлично работает в PHPMyAdmin, но не работает при попытке создать его с помощью SQLite.
Ошибка, отображаемая в консоли, представляет собой следующий код JSON.
{
"code":5,
"message":"Failed to import SQL; message=near \"KEY\": syntax error",
"statement":"CREATE TABLE IF NOT EXISTS `localListItems` ( `id` INTEGER NOT NULL , `quantity` TINYINT(2) NOT NULL , `checked` TINYINT(1) NOT NULL DEFAULT 0 , `listId` INTEGER NOT NULL , `itemId` INTEGER NOT NULL , PRIMARY KEY (`id`), KEY `fkIdx_26` (`listId`), CONSTRAINT `FK_26` FOREIGN KEY `fkIdx_26` (`listId`) REFERENCES `localLists` (`id`) ON DELETE CASCADE, KEY `fkIdx_30` (`itemId`), CONSTRAINT `FK_30` FOREIGN KEY `fkIdx_30` (`itemId`) REFERENCES `localItems` (`id`) ON DELETE CASCADE)"
}
Любая справка о том, почему это не работает, будет сильно оценена.Как я не могу понять код ошибки.
Спасибо.