Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: SQLite не создаёт таблицу
 
 автор: ~AquaZ~   (02.02.2010 в 14:42)   письмо автору
 
 

CREATE TABLE  'errs' (
 'id' BIGINT NOT NULL AUTO_INCREMENT ,
 'ip' INT NOT NULL ,
 'no' INT NOT NULL ,
 'text' TINYTEXT CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL ,
PRIMARY KEY ( 'id' )
);
Ошибка - near "AUTO_INCREMENT": syntax error
Кто знает - помогите, пожалуйста!

  Ответить  
 
 автор: Trianon   (02.02.2010 в 14:51)   письмо автору
 
   для: ~AquaZ~   (02.02.2010 в 14:42)
 

синтаксис языка SQL/SQLite смотрели?
Я вот в диаграмме банально не нашел слова с таким написанием.

  Ответить  
 
 автор: Слух   (02.02.2010 в 15:41)   письмо автору
 
   для: ~AquaZ~   (02.02.2010 в 14:42)
 

Заменил кавычки все заработало, правда у меня MySQL 5+ ^_^
CREATE TABLE  `errs` (
 `id` BIGINT NOT NULL AUTO_INCREMENT ,
 `ip` INT NOT NULL ,
 `no` INT NOT NULL ,
 `text` TINYTEXT CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL ,
PRIMARY KEY ( `id`)
);

  Ответить  
 
 автор: Trianon   (02.02.2010 в 15:54)   письмо автору
 
   для: Слух   (02.02.2010 в 15:41)
 

Шедевральный отклик :))

-У меня селедка под шубой не выходит, помогите!
- Заменил селедку с картошкой на горошек - всё вышло. Правда, у меня венигрет.

  Ответить  
 
 автор: Слух   (02.02.2010 в 16:13)   письмо автору
 
   для: Trianon   (02.02.2010 в 15:54)
 

Главное чтобы работало)

Попробуйте вот так

CREATE TABLE  `errs` ( 
 `id` INTEGER PRIMARY KEY , 
 `ip` INTEGER NOT NULL , 
 `no` INTEGER NOT NULL , 
 `text` TEXT CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL 
);

  Ответить  
 
 автор: Trianon   (02.02.2010 в 16:17)   письмо автору
 
   для: Слух   (02.02.2010 в 16:13)
 

- Попробуйте убрать свеклу.

Человеку вообще-то он нужен.

> Главное чтобы работало)
Вот с этим тезисом я пытаюсь бороться. По возможности.

  Ответить  
 
 автор: Слух   (02.02.2010 в 16:19)   письмо автору
 
   для: Trianon   (02.02.2010 в 16:17)
 

Собственно значительные отличия между SQLite и другими базами данных находятся в самом движке. В отличие от других БД в SQLite нет привязки к типам; все данные сохраняются как строки оканчивающиеся символом NULL, что лучше, чем двоичное представление данных в столбцах специального типа. По причине совместимости SQLite пока поддерживает тип спецификации в конструкциях CREATE TABLE, например, такой как INT, CHAR, FLOAT, TEXT и тому подобные, но реально их не использует. Внутри базы, SQLite только делает различие между строковыми и целочисленными данными во время сортировки. Поэтому, если вы не собираетесь сортировать данные, вы можете обойтись без указания специального типа полей при создании таблиц в SQLite.

"Безтиповая природа" SQLite делает сортировку и сопоставление данных в некотором роде медленнее, так как каждый раз SQLite будет вынуждена определять тип данных и применять либо строковый механизм сортировки/сравнения либо числовой. SQL таблицы часто требуют автоматически присваиваемый ключ для быстрого доступа к ячейкам, подразумевая возврат ссылки на последнюю добавленную ячейку. Для SQLite этот синтаксис, мягко говоря, бесполезен. Чтобы создать такую таблицу, вам понадобится объявить поле как INTEGER PRIMARY KEY, что более удобно чем указание специализированного типа или присваивание дополнительных свойств, которые указывают на то, что поле является автоинкрементным.

  Ответить  
 
 автор: Trianon   (02.02.2010 в 16:24)   письмо автору
 
   для: Слух   (02.02.2010 в 16:19)
 

Да. Был неправ.
А признак чем-то мешает?

  Ответить  
 
 автор: Слух   (02.02.2010 в 16:30)   письмо автору
 
   для: Trianon   (02.02.2010 в 16:24)
 

Я тоже не прав в том что дал первый ответ не посмотрев мануал по SQLite.

А нет такого признака, я как и вы не нашел его в мануале.
В принципе автор после первого вашего ответа мог и сам догадаться.

  Ответить  
 
 автор: Trianon   (02.02.2010 в 17:31)   письмо автору
16.4 Кб
 
   для: Слух   (02.02.2010 в 16:30)
 

Как это нету?
А это что (см.аттач) ?

  Ответить  
 
 автор: Слух   (02.02.2010 в 17:38)   письмо автору
 
   для: Trianon   (02.02.2010 в 17:31)
 

Такой есть и скорее всего правильно отработает
 `id` BIGINT NOT NULL AUTOINCREMENT ,

  Ответить  
 
 автор: Trianon   (02.02.2010 в 17:50)   письмо автору
 
   для: Слух   (02.02.2010 в 17:38)
 

Вот только я очень хотел, чтобы эту информацию тов. ~AquaZ~ добыл сам.

  Ответить  
 
 автор: ~AquaZ~   (02.02.2010 в 21:46)   письмо автору
 
   для: Trianon   (02.02.2010 в 17:50)
 

Кажется все тестируют всё на MySQL. SQLite не знает [`]. Именно поэтому я заменил в запросе, созданном PHPMyAdmin [`] на ['].

  Ответить  
 
 автор: Trianon   (02.02.2010 в 23:03)   письмо автору
 
   для: ~AquaZ~   (02.02.2010 в 21:46)
 

Кажется, Вы категорически не хотите читать мануал.

If you want to use a keyword as a name, you need to quote it. There are three ways of quoting keywords in SQLite:

'keyword' A keyword in single quotes is a string literal.
"keyword" A keyword in double-quotes is an identifier.
[keyword] A keyword enclosed in square brackets is an identifier. This is not standard SQL. This quoting mechanism is used by MS Access and SQL Server and is included in SQLite for compatibility.
`keyword` A keyword enclosed in grave accents (ASCII code 96) is an identifier. This is not standard SQL. This quoting mechanism is used by MySQL and is included in SQLite for compatibility.

  Ответить  
 
 автор: ~AquaZ~   (03.02.2010 в 16:58)   письмо автору
 
   для: Trianon   (02.02.2010 в 23:03)
 

В абсолютно любых кавычках (и без них) видит ошибку возле AUTO_INCREMENT.

  Ответить  
 
 автор: Trianon   (03.02.2010 в 17:10)   письмо автору
 
   для: ~AquaZ~   (03.02.2010 в 16:58)
 

Так.
Я уже открытым текстом требую от Вас ссылку на мануал, описывающий SQLite, где Вы увидели такое написание этого ключевого слова.

  Ответить  
 
 автор: ~AquaZ~   (03.02.2010 в 18:39)   письмо автору
 
   для: Trianon   (03.02.2010 в 17:10)
 

Так работает.
CREATE TABLE  errs (
 id BIGINT NOT NULL  PRIMARY KEY ASC,
 ip INT NOT NULL,
 no INT NOT NULL,
 text TINYTEXT CHARACTER_SET utf8 COLLATE utf8_unicode_ci NOT NULL
);

  Ответить  
 
 автор: Trianon   (03.02.2010 в 19:19)   письмо автору
 
   для: ~AquaZ~   (03.02.2010 в 18:39)
 

Что некрорректно написанное слово убрали - увидел.
Ссылки не увидел.
Долго еще будет этот цирк?

  Ответить  
 
 автор: ~AquaZ~   (03.02.2010 в 19:29)   письмо автору
 
   для: Trianon   (03.02.2010 в 19:19)
 

Слово было некорректно написано только для SQLite, для MySQL это правильно.
Ссылки и не будет, мануал читал только за минуту перед исправлением.
Цирка и небыло.

  Ответить  
 
 автор: Trianon   (03.02.2010 в 19:32)   письмо автору
 
   для: ~AquaZ~   (03.02.2010 в 19:29)
 

Слово было некорректно написано в контексте того [диалекта] языка, которым Вы желаете воспользоваться.
В любом другом контексте корректность (или отсутствие таковой) никого не интересует. Вас - в первую очередь!

Когда человек нарывается на сообщение "syntax error", и не соизволит сверить синтаксис с мануалом (даже после неоднократного предложения) , а лишь жалуется на судьбу уж сутки - это цирк.

PS. Для особо упертых. С мануалом того инструмента, на языке которого пишет. А не сильно на него похожего.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования