Синтаксис SQLite не совместим с MySQL? - PullRequest
6 голосов
/ 12 февраля 2012

Я использую PDO и пытаюсь заставить мое приложение поддерживать MySQL и SQLite, но в sqlite я получаю эту ошибку при попытке импортировать схему базы данных:

SQLSTATE[HY000]: General error: 1 near "AUTO_INCREMENT": syntax error

Запрос выглядит так:

CREATE TABLE events (

  id INT UNSIGNED NOT NULL AUTO_INCREMENT,
  name VARCHAR(32) NOT NULL,
  title VARCHAR(64) NOT NULL,
  description LONGTEXT,
  starttime DATETIME DEFAULT '0000-00-00 00:00:00',

  PRIMARY KEY(id),
  KEY name(name)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

(и это работает в базе данных MySQL.)

Я не понимаю, в чем здесь проблема? Разве обе системы баз данных не должны быть совместимы?

Ответы [ 5 ]

8 голосов
/ 12 февраля 2012

http://www.sqlite.org/autoinc.html

В SQLite это называется AUTOINCREMENT, а не AUTO_INCREMENT

5 голосов
/ 12 февраля 2012

AUTO_INCREMENT зависит от MySQL. SQLite, по-видимому, имеет аналогичную вещь, AUTOINCREMENT.

4 голосов
/ 12 февраля 2012

Они должны быть совместимыми в отношении стандартов ANSI SQL, и все базы данных SQL должны придерживаться этого.Однако AutoIncrement не является частью этого стандарта, но является дополнительной функцией, реализованной в некоторых базах данных (включая MySQL).Не все базы данных предоставляют эту функцию или могут предоставлять ее другим способом или с другим синтаксисом.

3 голосов
/ 12 февраля 2012

К сожалению, хотя SQL должен быть стандартом, каждая реализация базы данных отличается и имеет свои особенности, поэтому вы должны организовать свой запрос, чтобы он работал на SQLite.

2 голосов
/ 12 февраля 2012

Нет, они поддерживают совершенно другой набор функций. Самое существенное отличие состоит в том, что SQLite использует динамические типы данных , тогда как MySQL использует статические типы данных , но есть и много других отличий.

Однако оба они поддерживают общее подмножество SQL, поэтому можно написать несколько простых операторов SQL, которые будут работать в обеих системах.

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