mysql - Joomla模块安装mySQL

标签 mysql joomla installation manifest create-table

我正在创建一个新模块,但是这次我在创建数据库表时出错了。我也对安装它的文件结构感到困惑。我已经阅读了 Joomla 文档并尝试了他们所说的内容:

在我的 list 中,我创建了以下安装/删除 (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 文件有问题?

编辑:
这是一些 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 开发。

最佳答案

在你的 XML 文件中,你应该有类似这样的东西:

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

确保您还包括 <folder>sql</folder> .

至于您的 SQL 代码,请尝试以下仅使用 1 个插入命令的代码。它还会告诉它要将您在代码中忘记的值分配给哪个 ID:

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');

关于mysql - Joomla模块安装mySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20118623/

相关文章:

javascript - 为什么JS的链接会破坏bc?

css - :after pseudo-element working in FF, 但不是 Safari 或 Chrome

installation - 将 msiexec 命令行参数传递给 msiexec 启动的子进程

python - 无法安装 `gattlib`

python - 不使用任何数据库的类数据库操作

php - 从同一张表的每个类别中获取 4 个最新行

php - 如何从后端访问 Joomla 中的前端菜单对象?

MySQL - 如何将此表减少到总成本?

javascript - 为什么 PHP MySQL INSERT 通过 AJAX 调用只是偶尔发生?

installation - 我们如何创建不需要管理员权限的安装程序?