2013-11-21 2 views
1

Я создаю новый модуль, но на этот раз у меня возникла ошибка при создании моей таблицы базы данных. Также я немного смущен файловой структурой для ее установки. Я прочитал документацию Joomla и попробовал то, что они говорят:Joomla Module Install mySQL

В моем манифесте я создал следующие установки/удаления (SQL) разделы:

<?xml version="1.0" encoding="utf-8"?> 
<extension type="module" version="3.1.0" client="site" method="upgrade"> 
    <name>Modulename</name> 
    <author>Jerry Schirrmann</author> 
    <description>A test module</description> 
    <files> 
     <filename>mod_modulename.xml</filename> 
     <filename module="mod_modulename">mod_modulename.php</filename> 
     <filename>index.html</filename> 
     <filename>helper.php</filename> 
     <filename>tmpl/default.php</filename> 
     <filename>tmpl/index.html</filename> 
     <filename>sql/mysql/install.mysql.utf8.sql</filename> 
     <filename>sql/mysql/uninstall.mysql.utf8.sql</filename> 
    </files> 
    <config> 
     <install> 
      <sql> 
       <file driver="mysql" charset="utf8">sql/mysql/install.mysql.utf8.sql</file> 
       <file driver="sqlazure" charset="utf8">sql/sqlazure/install.sqlazure.utf8.sql</file> 
      </sql> 
     </install> 

     <uninstall> 
      <sql> 
       <file driver="mysql" charset="utf8">sql/mysql/uninstall.mysql.utf8.sql</file> 
       <file driver="sqlazure" charset="utf8">sql/sqlazure/uninstall.sqlazure.utf8.sql</file> 
      </sql> 
     </uninstall> 
    </config> 
</extension> 

и создал следующую структуру файла:
mod_xxx /sql/mysql/install.mysql.utf8.sql & mod_xxx/SQL/MySQL/install.mysql.utf8.sql

Теперь он не дает мне сообщение об ошибке во время установки, но только не будет создавать мой стол. Является ли моя файловая структура правильной? Или проблема в одном из моих SQL-файлов?

EDIT:
Вот некоторые из MYSQL кода

CREATE TABLE IF NOT EXISTS `#__modulename` (
     `id` int(10) NOT NULL AUTO_INCREMENT, 
     `hello` text NOT NULL, 
     `lang` varchar(25) NOT NULL, 

    PRIMARY KEY (`id`) 
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1; 

INSERT INTO `#__modulename` (`hello`, `lang`) VALUES ('Hello World', 'en-GB'); 
INSERT INTO `#__modulename` (`hello`, `lang`) VALUES ('Hola Mundo', 'es-ES'); 
INSERT INTO `#__modulename` (`hello`, `lang`) VALUES ('Bonjour tout le monde', 'fr-FR'); 

Мой Joomla в настоящее время на 3.2, я занимаюсь разработкой для 3.1.0.

+0

Какую версию Joomla вы используете? Можете ли вы предоставить код из вашего **. Sql ** файла, пожалуйста. Установлен ли модуль, даже если таблица базы данных не создается? – Lodder

+0

My Joomla в настоящее время на 3.2, я разрабатываю для 3.1.0. См. EDIT для SQL – jerry

+0

Вы включили ' sql' внутри '' тегов? – Lodder

ответ

4

В файле XML дальше, вы должны иметь что-то похожее на это:

<files> 
    <filename module="mod_modulename">mod_modulename.php</filename> 
    <filename>index.html</filename> 
    <folder>tmpl</folder> 
</files> 

Убедитесь, что вы также включают <folder>sql</folder>.

Что касается кода SQL, попробуйте следующее, которое использует только 1 команду вставки. Он также сообщает, какой идентификатор присваивает значения, которые вы забыли в своем коде:

CREATE TABLE IF NOT EXISTS `#__modulename` (
     `id` int(10) NOT NULL AUTO_INCREMENT, 
     `hello` text NOT NULL, 
     `lang` varchar(25) NOT NULL, 

    PRIMARY KEY (`id`) 
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1; 

INSERT INTO `#__modulename` (`id`, `hello`, `lang`) VALUES 
(1, 'Hello World', 'en-GB'), 
(2, 'Hola Mundo', 'es-ES'), 
(3, 'Bonjour tout le monde', 'fr-FR');