Не добавляет раздел

Выдает ошибку SQL

#1 28 декабря 2009 в 06:01
Всем доброго времени суток!
Установил на реальный хостинг версию 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

"Проверка БД" ничего не выдало (все — ОК), "Проверка деревьев" так же ОК.
Кто-нибудь сталкивался с подобным? Где и что подправляется?
#2 28 декабря 2009 в 11:47


Похоже, опять без демо-данных люди устанавливают сайты, не понимая, что будут глюки с разделами по умолчанию. Демоданные не только данные, но и ценный мех. v

Яшоматинандан

Да. Я ставил без демо-данных. Причем при отсутстсвии установки демо-данных оба раздела (Статьи и Новости) все равно существуют. Они что служебные чтоли? К тому же (насколько я помню): демо-данные тоже из разделов содержат те же Новости и Статьи, что и в голой инсталляции у меня в версии 1.5.2. К тому же в существующие разделы статьи добавляются, информация о существующих разделах модифицируется и сохраняется, а не работает создание нового раздела контента как в Корневом разделе, так и в других.

Так делать то что? Насколько я понимаю выданное MSQL — дело тут в неправильном синтаксисе запроса. Демо данные же относятся к содержимому базы данных, а не файлам содержащим SQL-запросы.
#3 28 декабря 2009 в 12:14
На этом многие новички прокалываются. Инстант не Джумла. Поэтому поставь с демоданными, а потом лишнее (его не так много) поудаляй. Съэкономишь и себе, и другим немало нервов и времени.
#4 28 декабря 2009 в 13:15


На этом многие новички прокалываются. Инстант не Джумла. Поэтому поставь с демоданными, а потом лишнее (его не так много) поудаляй. Съэкономишь и себе, и другим немало нервов и времени.

Снегурочка

Ну это как сказать. У меня в доске объявлений более 1200 разделов. Какие нервы тут можно сэкономить — не предполагаю, если учесть, что вбивал я их 3 дня.

Ну да ладно — не об этом сейчас. Создал чистую базу данных на хостинге в том же домене, создал отдельный поддомен, скопировал файлы, выставил права доступа, проинсталлировал InstantCMS версии 1.5.2. на поддомен с демо-данными. Конечно в разделе "Контент — Разделы" гораздо больше данных, чем просто "Статьи" и "Новости" без установки демо, но… переустановка с демо-данными ничего не дала — все та же ошибка и все так же при добавлении нового раздела контента. :(
#5 28 декабря 2009 в 13:23
А ты одинарными кавычками не пользовался, случаем?
#6 28 декабря 2009 в 13:30
А причём тут кавычки?
вопрос

А ты одинарными кавычками не пользовался, случаем?

Снегурочка
ответ

переустановка с демо-данными ничего не дала — все та же ошибка

Снегурочка

я так понял, что установка с нуля даже даёт сбой
#7 28 декабря 2009 в 13:37
Я правильно поняла, что ошибка возникла не после установки Инстанта, а именно при попытке создания раздела?
#8 28 декабря 2009 в 13:44


Я правильно поняла, что ошибка возникла не после установки Инстанта, а именно при попытке создания раздела?

Снегурочка

Нет. Кавычками я не пользволася, и спецсимволами тоже. Обычное название пытался завести — "Выставки" (без кавычек имеется ввиду).

Статьи в существующие разделы добавляются, существующие разделы изменяются, но новые разделы — не создаются :(

Сейчас накатаю туда же предыдущую версия 1.5.1 (с ней я уже работал) и посмотрю что она даст на этом же домене.
#9 28 декабря 2009 в 13:52
Ммммм… еще пришла в голову идея — CMOD какой выставил на папки?
#10 28 декабря 2009 в 13:57


Ммммм… еще пришла в голову идея — CMOD какой выставил на папки?

Снегурочка

Как в readme.txt указано — 777 на перечисленные папки (и папки внутри них).
#11 28 декабря 2009 в 14:24
Вот что я обнаружила, пока ты ставишь 1.5.1. В стандартном движке инстанта версии 1.5.2 НИГДЕ нет такого sql-запроса
  1. SELECT * FROM cms_category WHERE id = AND NSDiffer = ''
, или даже похожего.
Обращения к cms_category есть. Но ИМЕННО ТАКОГО текста нет нигде. Я поиском воспользовалась сперва по cms_category а потом в найденных искала NSDiffer. Это наводит на размышления о модификации движка…
#12 28 декабря 2009 в 14:26
Алексей, были сообщения, что не на всех хостах 777 работает как надо. может, дело в этом? Вот уж ты загадал загадку…
#13 28 декабря 2009 в 14:42
Установил на тот же домен в еще один поддомен с новой базой данных версию 1.5.1 — без демо-данных — все работает, разделы изначально отсутствуют (почему то в 1.5.2 без демо-данных существуют разделы "Новости" и "Статьи", а в 1.5.1 их нету), но новые разделы легко заводятся без ошибок.


Вот что я обнаружила, пока ты ставишь 1.5.1. В стандартном движке инстанта НИГДЕ нет такого sql-запроса

  1. SELECT * FROM cms_category WHERE id = AND NSDiffer = ''
.
Обращения к cms_category есть. Но ИМЕННО ТАКОГО текста нет нигде. Я поиском воспользовалась сперва по cms_category а потом в найденных искала NSDiffer. Это наводит на размышления о модификации движка.....

Снегурочка

Снегурочка, а ты так и не найдешь по целиковой строке, ведь в текстовике программы явно после
  1. id =
стоит значение, которое должно присваиваться, да и после
  1. NSDiffer =
тоже должно быть значение. Я вчера всю ночь потратил на поиски, по сочетаниям
  1. cms_category WHERE id =
,
  1. AND NSDiffer = '
,
  1. SELECT * FROM cms_category WHERE id =
и не нашел никакого криминала и ошибок. Точнее пара сомнительных строк типа id = $id вместо id = ’$id’ я нашел (одну строку в файле admin/applets/cats.php и вторую в файле admin/editor/index.php), но подправка с добавлением одинарных кавычек ничего не дала.

Вот я как представляю что случилось, раз получена строка ошибки
  1. SELECT * FROM cms_category WHERE id = AND NSDiffer = ''
:
Где то в SQL запросе в одном из файлов CMS присутствует
  1. SELECT * FROM cms_category WHERE id = [i]переменная1[/i]
, а не
  1. SELECT * FROM cms_category WHERE id = '[i]переменная1[/i]'
, а поскольку в одинарные кавычки переменная1 не заключена или же она получает значение NULL или еще какую пустоту, то SQL предполагает, что значение id идет после символа =, а после этого символа = у нас как раз идет
  1. AND NSDiffer = ''
, которые в режиме отладки система предлагает заключить в одинарные кавычки, считая целиком все это значением для id. Потому и выдается такая фишка, как:
  1. 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
#14 28 декабря 2009 в 14:51


Алексей, были сообщения, что не на всех хостах 777 работает как надо. может, дело в этом? Вот уж ты загадал загадку....

Снегурочка

У меня хостинг на Агаве: Apache 1.3.41 (Unix), PHP 5.2.11, MySQL 5.0.84-log
Снегурочка, я и сам не ожидалтакой подковыки. Все проинсталилось изначально гладко без предупреждений и ошибок, поскольку объем самый большой по сайту был связан с Доской объявлений — за нее и взялся первой, а когда окончил — модули повключал, затем дизайном немного позанимался и захотел для раздела "Новости" создать несколько подразделов. Вот тут то и всплыла эта бяка.

Т.е. ты считаешь, что нужно с правами поиграться? Например 755 установить на те же папки?

В версии 1.5.2 с демо-данными поудалял все статьи, затем все разделы. Попытался создать новый раздел — снова выскочила та же ошибка. Заменил права на папки с 777 на 755 — создание нового раздела так же завершается той же ошибкой.
#15 28 декабря 2009 в 15:49


Вот что я обнаружила, пока ты ставишь 1.5.1. В стандартном движке инстанта версии 1.5.2 НИГДЕ нет такого sql-запроса

  1. 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 с этого самого сайта и он у меня долго лежал, т.к. не было времени его опробовать. Вот первый опыт работы с этой версией закончился неудачей.
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.