Разработка компонента

  • 16 Ответов
  • 247 Просмотров

0 Пользователей и 1 Гость просматривают эту тему.

Разработка компонента
« : 23.05.2017, 12:22:54 »
Привет всем.Кто шарит в разработке компонентов для Joomla?
Создаю компонент, но при установке влетает ошибка файла install.sql Расширение Установить: ошибка выполения SQL-запроса: Ошибка базы данных с номером 1064 типа ошибка синтаксиса, но если берешь и через БД делаешь запрос, то все устанавливается. В чем проблема не могу понять.Вот сам запрос

CREATE TABLE IF NOT EXISTS `doska` (
`id` int(5) unsigned NOT NULL auto_increment,
`name` varchar(255) NOT NULL,
`parent_id` int(5) NOT NULL DEFAULT '0',
`alias` varchar(255) NOT NULL ,
`state` tinyint(1) NULL DEFAULT '1',
PRIMARY KEY ( `id`)
)ENGINE=MyISAM DEFAULT CHARSET=utf8;

*

robert

  • ********
  • 4002
  • 371
Re: Разработка компонента
« Ответ #1 : 23.05.2017, 12:29:10 »
Привет всем.Кто шарит в разработке компонентов для Joomla?
Да таких тут целая орда.
Не надо "типа", приведите текст ошибки полностью.
  • Не будь паразитом, сделай что-нибудь самостоятельно!
  • В личке и по Skype не даю советов.

*

AlekVolsk

  • ********
  • 6301
  • 336
Re: Разработка компонента
« Ответ #2 : 23.05.2017, 12:31:46 »
создание первичного ключа следует вынести в отдельный запрос, а к таблице следует дописать префикс '#__'

*

b2z

  • *****
  • 7449
  • 741
  • Разраблю понемногу
Re: Разработка компонента
« Ответ #3 : 23.05.2017, 13:57:20 »
создание первичного ключа следует вынести в отдельный запрос
Зачем?

Цитировать
а к таблице следует дописать префикс '#__'
Да, это верное замечание.

Код: sql
CREATE TABLE IF NOT EXISTS `#__doska`

Цитировать
ENGINE=MyISAM
Я бы InnoDB использовал.

*

AlekVolsk

  • ********
  • 6301
  • 336
Re: Разработка компонента
« Ответ #4 : 23.05.2017, 14:00:24 »
Зачем?
некоторые сборки мускула ругаются именно на это, например рег.ру этой фигней страдает

Re: Разработка компонента
« Ответ #5 : 23.05.2017, 15:27:50 »
создание первичного ключа следует вынести в отдельный запрос, а к таблице следует дописать префикс '#__'
С префиксом тоже самое.

*

AlekVolsk

  • ********
  • 6301
  • 336
Re: Разработка компонента
« Ответ #6 : 23.05.2017, 15:41:36 »
скопируйте сюда полный текст сообщения об ошибке

*

dmitry_stas

  • ********
  • 9639
  • 929
Re: Разработка компонента
« Ответ #7 : 23.05.2017, 16:00:56 »
сервер на windows?
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций

Re: Разработка компонента
« Ответ #8 : 23.05.2017, 16:08:04 »
скопируйте сюда полный текст сообщения об ошибке
Код
Предупреждение

JInstaller: :Install: Ошибка SQL 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 'CREATE TABLE IF NOT EXISTS `#__doska` ( `id` int(5) unsigned NOT NULL au' at line 1 SQL=CREATE TABLE IF NOT EXISTS `#__doska` ( `id` int(5) unsigned NOT NULL auto_increment, `name` varchar(255) NOT NULL, `parent_id` int(5) NOT NULL DEFAULT '0', `alias` varchar(255) NOT NULL , `state` tinyint(1) NULL DEFAULT '1', PRIMARY KEY ( `id`) )ENGINE=MyISAM DEFAULT CHARSET=utf8;
Расширение Установить: ошибка выполения SQL-запроса: Ошибка базы данных с номером 1064
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 'CREATE TABLE IF NOT EXISTS `#__doska` ( `id` int(5) unsigned NOT NULL au' at line 1 SQL=CREATE TABLE IF NOT EXISTS `#__doska` ( `id` int(5) unsigned NOT NULL auto_increment, `name` varchar(255) NOT NULL, `parent_id` int(5) NOT NULL DEFAULT '0', `alias` varchar(255) NOT NULL , `state` tinyint(1) NULL DEFAULT '1', PRIMARY KEY ( `id`) )ENGINE=MyISAM DEFAULT CHARSET=utf8;
SQL =
CREATE TABLE IF NOT EXISTS `#__doska` (
 `id` int(5) unsigned NOT NULL auto_increment,
 `name` varchar(255) NOT NULL,
 `parent_id` int(5) NOT NULL DEFAULT  '0',
 `alias` varchar(255) NOT NULL ,
 `state` tinyint(1) NULL DEFAULT  '1',
PRIMARY KEY ( `id`)
)ENGINE=MyISAM  DEFAULT CHARSET=utf8;

Re: Разработка компонента
« Ответ #9 : 23.05.2017, 16:08:22 »
сервер на windows?
нет, хостинг Beget

*

AlekVolsk

  • ********
  • 6301
  • 336
Re: Разработка компонента
« Ответ #10 : 23.05.2017, 16:13:33 »
попробуйте все-таки убрать PRIMARY KEY ( `id`),
также попробуйте вынести отдельно автоинкремент, его указание обычно идет после указания первичного ключа:

ALTER TABLE `#__doska` ADD PRIMARY KEY (`id`);
ALTER TABLE `#__doska` MODIFY `id` int(5) NOT NULL AUTO_INCREMENT;

*

dmitry_stas

  • ********
  • 9639
  • 929
Re: Разработка компонента
« Ответ #11 : 23.05.2017, 16:14:16 »
нет, хостинг Beget
смешно :) сервер хостинга Beget - на windows?

попробуйте сделать http://joomlaforum.ru/index.php/topic,338131.msg1709310.html#msg1709310
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций

Re: Разработка компонента
« Ответ #12 : 23.05.2017, 16:16:16 »
попробуйте все-таки убрать PRIMARY KEY ( `id`)
тоже самое

*

AlekVolsk

  • ********
  • 6301
  • 336
Re: Разработка компонента
« Ответ #13 : 23.05.2017, 16:17:43 »
проверьте кодировку файла

Re: Разработка компонента
« Ответ #14 : 23.05.2017, 16:23:28 »
проверьте кодировку файла
Кодировка UTF-8
сейчас попробовал вставить в файл запрос от революшион слайдер и такая же фишка, только тут то точно все верно
CREATE TABLE IF NOT EXISTS `#__revslider_sliders` (
  `id` int(10) unsigned NOT NULL auto_increment,
  `title` varchar(255) NOT NULL,
  `alias` varchar(255) NOT NULL default '',
  `params` text NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8;

*

AlekVolsk

  • ********
  • 6301
  • 336
Re: Разработка компонента
« Ответ #15 : 23.05.2017, 16:25:03 »
ну тогда надо смотреть самому более предметно, дальнейшее - это уже гадание по гуще, в комм.раздел

Re: Разработка компонента
« Ответ #16 : 23.05.2017, 16:27:42 »
ну тогда надо смотреть самому более предметно, дальнейшее - это уже гадание по гуще, в комм.раздел
Решено! Кодировка должна быть без BOM