"UNSIGNED": синтаксическая ошибка: при создании запроса таблицы при импорте в sqlite - PullRequest
0 голосов
/ 29 апреля 2018

Я импортировал свою таблицу mysql в sqlite, и когда я выполнял там запрос на создание таблицы, я обнаружил эту ошибку и не смог ее исправить. Мне было интересно, что является ошибкой в ​​этом запросе. Мне сказали, что ошибка близка к "UNSIGNED": синтаксическая ошибка: CREATE TABLE t_malayalam ( id int (8) НЕ ПОДПИСАНО

Это мой запрос

CREATE TABLE `t_malayalam` (
  `id` int(8) UNSIGNED ZEROFILL NOT NULL,
  `b` int(11) NOT NULL,
  `c` int(11) NOT NULL,
  `v` int(11) NOT NULL,
  `t` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL
)

1 Ответ

0 голосов
/ 29 апреля 2018

Здесь есть несколько проблем. Во-первых, CHARACTER SET utf8 недопустимо, поскольку SET является ключевым словом в SQLite3. (Возможно, вы все равно хотите избавиться от предложения COLLATE, так как выбранное вами сопоставление utf8_bin в любом случае недопустимо. Подробности см. https://www.sqlite.org/datatype3.html#collation.) Кроме того, вам нужно избавиться от недопустимых спецификаций. после типа столбца типа UNSIGNED и ZEROFILL. (Также обратите внимание, что типы типа int(8), хотя и разрешены, эквивалентны простому типу integer.)

Поскольку в своем комментарии вы сказали, что хотите, чтобы поле id было уникальным индикатором строки, вы должны указать его:

id integer primary key

(Нет необходимости в NOT NULL; это будет автоматически.)

Итак, я думаю, вы хотите что-то вроде:

CREATE TABLE `t_malayalam` (
  `id` INTEGER PRIMARY KEY,
  `b` INTEGER NOT NULL,
  `c` INTEGER NOT NULL,
  `v` INTEGER NOT NULL,
  `t` TEXT NOT NULL
  )

Обратите внимание, что обратные пометки являются ненужными (и нестандартным SQL), но также не приносят вреда.

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