【问题标题】:Creating stored procedures with Joomla Custom Installer code API使用 Joomla 自定义安装程序代码 API 创建存储过程
【发布时间】:2011-11-12 13:20:39
【问题描述】:

更新:[背景信息:我正在开发一个使用 PHP 代码与 MySql 数据库交互的 Silverlight 应用程序。我在 www.mobilesportscoach.com(www.mobilesportscoach.com/test 上的演示站点)上有一个常规安装包,当您在 phpMyAdmin 中运行 SQL 文件时效果很好。但我希望整个包都可以安装在 Joomla 中,而无需人们在多个地方运行多个脚本。]

我正在创建一个 joomla 组件 xml 安装文件,并且在安装部分我希望它使用 sql 脚本创建我的表/存储过程,所以我尝试过:

    <install> 
     <sql> 
      <file charset="utf8" driver="mysql">install.sql</file> 
     </sql> 
     <install>

表不是问题,单行 sql 代码运行良好,但在我的 SQL 创建过程语句中我必须更改分隔符(这就是它在 MySQL 中的工作方式),例如:

    DELIMITER $$
    CREATE PROCEDURE `tp_delete_match_and_scores_onmatchid`(IN matchid VARCHAR(10))
    BEGIN
     DELETE FROM tp_scores WHERE (tp_scores.matchid=matchid);
     DELETE FROM tp_matches WHERE (tp_matches.recid=matchid);
    END$$
    DELIMITER ;

扩展安装程序给了我:

   JInstaller: :Install: Error SQL DB function failed with error number 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 'DELIMITER $$ 

我也尝试过自定义安装程序 api,但无法正常工作: 我的 xml 中有一个 installfile 标记: 安装.component.php

我的 php:

 <?php
function com_install(){
global $database;

 echo  "TEST COM_INSTALL";

 //get database
 if(defined('_JEXEC')){
  //joomla 1.5
  $database = JFactory::getDBO();
 }   

 //table for item index
  $query = "CREATE PROCEDURE `tp_delete_match_and_scores_onmatchid`(IN matchid VARCHAR(10)"; 
  $query .= "\nBEGIN"; 
  $query .= "\nDELETE FROM tp_scores WHERE (tp_scores.matchid=matchid);"; 
  $query .= "\nDELETE FROM tp_matches WHERE (tp_matches.recid=matchid);";
  $query .= "\nEND"; 

  $database->setQuery($query);
  $database->query();

  ?>

组件安装正常,但我找不到我的 phpMyAdmin 程序 / 未创建。 好像 install.component.php 根本没有被触发?

我不希望用户运行单独的 sql 脚本,如果可能的话,我希望它们都在一个包中...

【问题讨论】:

  • 您是否能够检查您使用的用户名是否允许执行存储过程的创建?
  • Joomla 以具有所有权限的 root (localhost test dbase) 身份连接
  • 你有什么理由首先使用存储过程? stackoverflow.com/questions/59880/…
  • 抱歉耽搁了布伦特,我正在使用 SP,因为我的 Silverlight 应用程序使用 SP 与 MySQL 数据库通信,您可以在 www.mobilesportscoach.com/test 和 www.mobilesportscoach 上查看常规安装/应用程序.com 迈克

标签: php mysql joomla


【解决方案1】:

有同样的问题,发现这个关于清单 XML 文件:

http://docs.joomla.org/Manifest_files#Script_file

有一个“脚本文件”部分描述了您的需求。您必须在自定义安装程序脚本中创建一个特殊类。

【讨论】:

  • 谢谢你的回复,我会调查的;)
【解决方案2】:

一个常见的事情是将关键字“TYPE”更改为“ENGINE”(对于 MySQL 5.5.x),但有时它仍然不起作用...

确保您的 install.sql 文件在没有 BOM 的情况下以 UTF-8 格式化/编码!!

【讨论】:

  • thnx inter我试试看
猜你喜欢
  • 1970-01-01
  • 2023-03-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多