Курилка.co.ua
Orphus RSS kurilka.co.ua

Category

Archives

SQLite и атрибут автоинкремнт (auto_increment)

Author wmas wmas | Category Category PHP

Здравствуйте, уважаемые посетители моего блога Курилка.co.ua. С недавних пор заинтересовался такой штукой как SQLite. Однако, после долгого использования MySQL, возникли проблемы с атрибутом автоинкремен (auto_increment). В данной заметке я решил поделиться своим опытом и решением «проблемы», но всё по порядку.

Что такое SQLite?

SQLite — это встраиваемый движок баз данных. Под словом «встраиваемый» подразумевается, что SQLite не использует концепцию клиент-сервер, т.е. движок SQLite не является отдельно работающим процессом, а представляет собой библиотеку. Следует отметить, что SQLite хранит базы данных в отдельных файлах, которые можно легко перенести на другой сервер, без необходимости задумываться о дампах и т.д. Подробней читайте на официальном сайте, если знаете английский.

Уточнение: речь пойдёт об SQLite как расширении для PHP.

Установка SQLite

Думаю, будет не лишним дать небольшую подсказку: «как установить расширение SQLite для PHP 5 на локальный сервер (Денвер) под Windows?» Естественно вам понадобится скачать пакет расширений для PHP5. Найти их можно официальном сайте сборки Денвер, а именно здесь. По крайней мере, именно там я их и брал. После установки (если у вас все установлено по дефолту) заходим в папку: WebServer/usr/local/php5, где открываем файл php.ini и раскавычиваем (убираем в начале строки символ точка с запятой (;)) следующие строки:

extension=php_pdo.dll
extension=php_pdo_sqlite.dll
extension=php_sqlite.dll

Стартуем или перезапускаем сервер. Вот все и работает.

Создание таблиц в MySQL и SQLite

Нет, я не собираюсь разбираться с вопросом: «что лучше, MySQL или SQLite?» Однако, с точки зрения языка запросов SQL определенные отличии имеются. Одно из токовых атрибут автоинкремнт. Если для MySQL это AUTO_INCREMENT, то для SQLite – AUTOINCREMENT, т.е. без символа подчеркивания (_). Чтобы было более понятно приведу рабочий пример создания таблицы test в SQLite:

CREATE TABLE test (id INTEGER AUTOINCREMENT, name VARCHAR(128) NOT NULL, PRIMARY KEY(id));

PHP-код создания БД database и таблицы test

Так как я уже заговорил о PHP, то приведу небольшой пример кода по созданию БД database и таблицы test:

if ( $db = sqlite_open("database", 0666, $error) ) {
  sqlite_query($sb, "CREATE TABLE test (id INTEGER AUTOINCREMENT, name VARCHAR(128) NOT NULL, PRIMARY KEY (id));");
} else echo 'Error: '.$error;

Вот собственно и всё. Если у вас есть какие-то утонения, вопросы и т.п. – пишите. Спасибо за внимание.

Publish: Четверг Ноя 12, 2009

3 Responses for "SQLite и атрибут автоинкремнт (auto_increment)"

feed for comments on this post

  • Комментарий #2700 author: Misha Reply (subscribed to comments)
    publish: Суббота Июл 3, 2010 at 2:22 пп

    Когда я виполняю
    CREATE TABLE test (id INTEGER AUTOINCREMENT, name VARCHAR(128) NOT NULL, PRIMARY KEY(id));

    мне вертает
    QSqlError(1, "Unable to execute statement", "near "AUTOINCREMENT": syntax error");

  • Комментарий #2701 author: wmas Reply
    publish: Воскресенье Июл 4, 2010 at 1:47 дп

    2Misha: hi! В моём случае речь идёт о PHP, как с Qt (вы же именно на нём пишете?) я не знаю.
    Но по всей видимости нюансы используемой версии SQLite. На 2.x всё вроде работает.

  • Комментарий #2818 author: Andrey Reply
    publish: Среда Май 25, 2011 at 10:28 пп

    2Misha:
    Полагаю, за год разобрадись ), но напишу для таких как я

    CREATE TABLE sities
    (
    ID INTEGER PRIMARY KEY AUTOINCREMENT,
    URL TEXT,
    date DATETIME DEFAULT CURRENT_TIMESTAMP,
    )

    работает в qt


Popular links

Copyright © since 2006 Курилка.co.ua,
powered by WordPress