Выдает ошибку SQL
Установил на реальный хостинг версию 1.5.2. В версии имеются два раздела контента "Новости" и "Статьи". При попытке создать еще один раздел выдает: Nested sets error: SELECT * FROM cms_category WHERE id = AND NSDiffer = ’’
Сперва подумал, что это из-за большого кол-ва разделов в Доске объявлений, но когда заново переустановил сайт целиком (с заведением новой базы данных, удалением старых файлов и установкой новых) — все осталось по прежнему.
Включил режим отладки и попытался снова создать новый раздел. Выдало:
DATABASE ERROR:
SELECT * FROM cms_category WHERE id = AND NSDiffer = ’’
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ’AND NSDiffer = ’’’ at line 1
"Проверка БД" ничего не выдало (все — ОК), "Проверка деревьев" так же ОК.
Кто-нибудь сталкивался с подобным? Где и что подправляется?
Похоже, опять без демо-данных люди устанавливают сайты, не понимая, что будут глюки с разделами по умолчанию. Демоданные не только данные, но и ценный мех.
Да. Я ставил без демо-данных. Причем при отсутстсвии установки демо-данных оба раздела (Статьи и Новости) все равно существуют. Они что служебные чтоли? К тому же (насколько я помню): демо-данные тоже из разделов содержат те же Новости и Статьи, что и в голой инсталляции у меня в версии 1.5.2. К тому же в существующие разделы статьи добавляются, информация о существующих разделах модифицируется и сохраняется, а не работает создание нового раздела контента как в Корневом разделе, так и в других.
Так делать то что? Насколько я понимаю выданное MSQL — дело тут в неправильном синтаксисе запроса. Демо данные же относятся к содержимому базы данных, а не файлам содержащим SQL-запросы.
На этом многие новички прокалываются. Инстант не Джумла. Поэтому поставь с демоданными, а потом лишнее (его не так много) поудаляй. Съэкономишь и себе, и другим немало нервов и времени.
Ну это как сказать. У меня в доске объявлений более 1200 разделов. Какие нервы тут можно сэкономить — не предполагаю, если учесть, что вбивал я их 3 дня.
Ну да ладно — не об этом сейчас. Создал чистую базу данных на хостинге в том же домене, создал отдельный поддомен, скопировал файлы, выставил права доступа, проинсталлировал InstantCMS версии 1.5.2. на поддомен с демо-данными. Конечно в разделе "Контент — Разделы" гораздо больше данных, чем просто "Статьи" и "Новости" без установки демо, но… переустановка с демо-данными ничего не дала — все та же ошибка и все так же при добавлении нового раздела контента. :(
вопрос
ответА ты одинарными кавычками не пользовался, случаем?
переустановка с демо-данными ничего не дала — все та же ошибка
я так понял, что установка с нуля даже даёт сбой
Я правильно поняла, что ошибка возникла не после установки Инстанта, а именно при попытке создания раздела?
Нет. Кавычками я не пользволася, и спецсимволами тоже. Обычное название пытался завести — "Выставки" (без кавычек имеется ввиду).
Статьи в существующие разделы добавляются, существующие разделы изменяются, но новые разделы — не создаются :(
Сейчас накатаю туда же предыдущую версия 1.5.1 (с ней я уже работал) и посмотрю что она даст на этом же домене.
Ммммм… еще пришла в голову идея — CMOD какой выставил на папки?
Как в readme.txt указано — 777 на перечисленные папки (и папки внутри них).
SELECT * FROM cms_category WHERE id = AND NSDiffer = ''
Обращения к cms_category есть. Но ИМЕННО ТАКОГО текста нет нигде. Я поиском воспользовалась сперва по cms_category а потом в найденных искала NSDiffer. Это наводит на размышления о модификации движка…
Вот что я обнаружила, пока ты ставишь 1.5.1. В стандартном движке инстанта НИГДЕ нет такого sql-запроса
.
SELECT * FROM cms_category WHERE id = AND NSDiffer = ''
Обращения к cms_category есть. Но ИМЕННО ТАКОГО текста нет нигде. Я поиском воспользовалась сперва по cms_category а потом в найденных искала NSDiffer. Это наводит на размышления о модификации движка.....
Снегурочка, а ты так и не найдешь по целиковой строке, ведь в текстовике программы явно после
id =
NSDiffer =
cms_category WHERE id =
AND NSDiffer = '
SELECT * FROM cms_category WHERE id =
Вот я как представляю что случилось, раз получена строка ошибки
SELECT * FROM cms_category WHERE id = AND NSDiffer = ''
Где то в SQL запросе в одном из файлов CMS присутствует
SELECT * FROM cms_category WHERE id = [i]переменная1[/i]
SELECT * FROM cms_category WHERE id = '[i]переменная1[/i]'
AND NSDiffer = ''
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'AND NSDiffer = ''' at line 1
Алексей, были сообщения, что не на всех хостах 777 работает как надо. может, дело в этом? Вот уж ты загадал загадку....
У меня хостинг на Агаве: Apache 1.3.41 (Unix), PHP 5.2.11, MySQL 5.0.84-log
Снегурочка, я и сам не ожидалтакой подковыки. Все проинсталилось изначально гладко без предупреждений и ошибок, поскольку объем самый большой по сайту был связан с Доской объявлений — за нее и взялся первой, а когда окончил — модули повключал, затем дизайном немного позанимался и захотел для раздела "Новости" создать несколько подразделов. Вот тут то и всплыла эта бяка.
Т.е. ты считаешь, что нужно с правами поиграться? Например 755 установить на те же папки?
В версии 1.5.2 с демо-данными поудалял все статьи, затем все разделы. Попытался создать новый раздел — снова выскочила та же ошибка. Заменил права на папки с 777 на 755 — создание нового раздела так же завершается той же ошибкой.
Вот что я обнаружила, пока ты ставишь 1.5.1. В стандартном движке инстанта версии 1.5.2 НИГДЕ нет такого sql-запроса
, или даже похожего.
SELECT * FROM cms_category WHERE id = AND NSDiffer = ''
Обращения к cms_category есть. Но ИМЕННО ТАКОГО текста нет нигде. Я поиском воспользовалась сперва по cms_category а потом в найденных искала NSDiffer. Это наводит на размышления о модификации движка.....
Как я уже писал — напрямую такого запроса не существует, то что я находил по кусочкам составляющим этот запрос — он многокомпонентен, т.е. некой переменной текстовой сперва присваивается значение типа "SELECT * FROM cms_category", затем в ходе дальнейших обработок может быть добавлено к концу строки " WHERE id = ’$id’", а потом еще далее — " AND NSDiffer = ’$differ’", а в итоге где-нибудь в конце может находится команда на выполнение запроса из этой текстовой переменной, которая к тому моменту уже будет содержать в себе "SELECT * FROM cms_category WHERE id = ’$id’ AND NSDiffer = ’$differ’". Поэтому напрямую в тексте программы этого можно запросто не найти в целиковом оконечном виде. Паршиво то, что у меня в логах пусто и я не могу выяснить какая именно строка отправляет запрос на исполнение, чтобы обратно от этого просматривать ход наполнения переменной.
Движок у меня не модифицирован — я его выкачал сразу после объявления о выходе версии 1.5.2 с этого самого сайта и он у меня долго лежал, т.к. не было времени его опробовать. Вот первый опыт работы с этой версией закончился неудачей.