1 (изменено: Борисов Александр, 2008-02-14 21:38:05)

Тема: Проблема: SQL-запрос для инсталяции модуля

[size=11]
Устанавливаю простой модуль на скрипт DLE на сервер.
Согласно инструкции по инсталляции делаю SQL-запрос в уже существующую БД:

DROP TABLE IF EXISTS `srt_faq`;
CREATE TABLE IF NOT EXISTS `srt_faq` (
  `id` int(10) NOT NULL auto_increment,
  `question` text NOT NULL,
  `answer` text NULL,
  `position` tinyint(5) NOT NULL default 1,
  `page` smallint(8) NOT NULL default 0,
  `date` datetime NOT NULL default '0000-00-00 00:00:00',
  PRIMARY KEY  (`id`)
) TYPE=MyISAM /*!40101 DEFAULT CHARSET=cp1251 */;
 
DROP TABLE IF EXISTS `srt_faq_pages`;
CREATE TABLE IF NOT EXISTS `srt_faq_pages` (
  `id` smallint(8) NOT NULL auto_increment,
  `name` varchar(255) NOT NULL default '',
  `altname` varchar(255) NOT NULL default '',
  `date` datetime NOT NULL default '0000-00-00 00:00:00',
  PRIMARY KEY  (`id`)
) TYPE=MyISAM /*!40101 DEFAULT CHARSET=cp1251 */;

Получаю такой ответ:

SQL-запрос:
DROP TABLE IF EXISTS `srt_faq` ;# MySQL вернула пустой результат (т.е. ноль строк).
CREATE TABLE IF NOT EXISTS `srt_faq` (
`id` int( 10 ) NOT NULL AUTO_INCREMENT ,
`question` text NOT NULL ,
`answer` text NULL ,
`position` tinyint( 5 ) NOT NULL default 1,
`page` smallint( 8 ) NOT NULL default 0,
`date` datetime NOT NULL default '0000-00-00 00:00:00',
PRIMARY KEY ( `id` ) 
) TYPE = MYISAM /*!40101 DEFAULT CHARSET=cp1251 */;# MySQL вернула пустой результат (т.е. ноль строк).
DROP TABLE IF EXISTS `srt_faq_pages` ;# MySQL вернула пустой результат (т.е. ноль строк).
CREATE TABLE IF NOT EXISTS `srt_faq_pages` (
`id` smallint( 8 ) NOT NULL AUTO_INCREMENT ,
`name` varchar( 255 ) NOT NULL default '',
`altname` varchar( 255 ) NOT NULL default '',
`date` datetime NOT NULL default '0000-00-00 00:00:00',
PRIMARY KEY ( `id` ) 
) TYPE = MYISAM /*!40101 DEFAULT CHARSET=cp1251 */;# MySQL вернула пустой результат (т.е. ноль строк).

На локалке всё прошло отлично.
Здесь же таблицы srt_faq и srt_faq_pages получаются вне основных таблиц базы.
Так это выглядит:
srt_faq
srt_faq_pages
srt (33)

В итоге модуль не пашет.
Подскажите, плжст, в чём проблема и возможные пути решения. Спасибо!

[/size]

2

Re: Проблема: SQL-запрос для инсталяции модуля

Борисов Александр сказал:

Здесь же таблицы srt_faq и srt_faq_pages получаются вне основных таблиц базы.

К сожалению я не смог этого понять. Поясните, пожалуйста.

Re: Проблема: SQL-запрос для инсталяции модуля

Hanut сказал:
Борисов Александр сказал:

Здесь же таблицы srt_faq и srt_faq_pages получаются вне основных таблиц базы.

К сожалению я не смог этого понять. Поясните, пожалуйста.

Я имею ввиду левую часть главной страницы phpMyAdmin панели.
Все остальные таблицы находятся в этом списке  srt (33).
Таблицы srt_faq и srt_faq_pages вне этих 33 таблиц.
При том же запросе в локалке они (таблицы) суммируются, соответственно, отображается srt (35)
Не совсем уверен, что это и есть причина...
В итоге при работе работе с модулём MySQL выдаёт ошибку №1146. Якобы таблица srt_faq_pages не существует.
Однако, она отображается в структуре БД в phpMyAdmin панели.

4

Re: Проблема: SQL-запрос для инсталяции модуля

Борисов Александр
Странная ситуация. Дело в том что приведенные вами запросы не могут создать БД, а у вас именно они и создались. Попробуйте сделать следующее: удалите эти две БД, выберите в phpMyAdmin БД str (кликните на ней), после чего перейдите на вкладку SQL, куда и вставьте вышеуказанные запросы на создание таблиц.

Re: Проблема: SQL-запрос для инсталяции модуля

Hanut сказал:

Борисов Александр
Странная ситуация. Дело в том что приведенные вами запросы не могут создать БД, а у вас именно они и создались. Попробуйте сделать следующее: удалите эти две БД, выберите в phpMyAdmin БД str (кликните на ней), после чего перейдите на вкладку SQL, куда и вставьте вышеуказанные запросы на создание таблиц.

srt - это префикс таблиц БД скрипта.
Удалил. Сделал как вы сказали. Вот результат.
http://img86.imageshack.us/img86/9853/bd00wx4.jpg
При работе с модулем скрипт выдаёт ошибку №1146 со следующим комментарием:

SELECT COUNT(`f`.`id`) AS `allcount`,
COUNT(IF(`f`.`answer` = '', 1, NULL)) AS
`notcount`, `p`.`id`, `p`.`name`, `p`.`altname`,
DATE_FORMAT(`p`.`date`, '%d.%m.%Y %H:%i') AS `date`
FROM `srt__faq_pages` AS `p` LEFT JOIN `srt__faq`
AS `f` ON `f`.`page` = `p`.`id` GROUP BY `p`.`id`
ORDER BY `p`.`date` DESC

6

Re: Проблема: SQL-запрос для инсталяции модуля

Борисов Александр
Не понимаю почему у вас так получилось, но попробуйте сделать следующее:
Удалите таблицы srt_faq и srt_faq_pages.
В SQL запросе поменяйте имена таблиц добавив символ нижнего подчеркивания после префикса, следующим образом:
srt_faq -> srt__faq
srt_faq_pages -> srt__faq_pages

Re: Проблема: SQL-запрос для инсталяции модуля

Hanut сказал:

Борисов Александр
Не понимаю почему у вас так получилось, но попробуйте сделать следующее:
Удалите таблицы srt_faq и srt_faq_pages.
В SQL запросе поменяйте имена таблиц добавив символ нижнего подчеркивания после префикса, следующим образом:
srt_faq -> srt__faq
srt_faq_pages -> srt__faq_pages

Hanut, выполнил то, что Вы сказали - попадание точно в десятку!
Огромное спасибо! Дай бог Вам и вашим близким здоровья!