2

SQLSTATE [42S02]:未找到基表或视图:1146 表“desbest_full2.showdown_matches”不存在

但是为什么,如果我里面有一个 mysql 设置脚本app/code/local/Desbest/Showdown/sql/Showdown_setup/mysql4-install-1.php

<?php
echo 'Running This Upgrade: '.get_class($this)."\n <br /> \n"; die("Exit for now");

$installer = $this;
/* @var $installer Mage_Catalog_Model_Resource_Eav_Mysql4_Setup */
$installer->startSetup();
$installer->run("

    CREATE TABLE {$this->getTable('showdown_matches')} (
    --CREATE TABLE IF NOT EXISTS `showdown_matches` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `firstproductid` int(11) NOT NULL,
      `secondproductid` int(11) NOT NULL,
      `title` varchar(255) NOT NULL,
      `datenumber` varchar(10) NOT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8_general_ci AUTO_INCREMENT=1 ;

    CREATE TABLE IF NOT EXISTS `showdown_votes` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `matchid` int(11) NOT NULL,
      `votedfor` varchar(10) NOT NULL,
      `ip` varchar(50) NOT NULL,
      `datenumber` varchar(10) NOT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8_general_ci AUTO_INCREMENT=1 ;



");
$installer->endSetup();

该模块适用于我最初的 Magento 安装。

4

2 回答 2

5

您的安装脚本可能没有运行,因为 Magento 认为它已经运行。您可以检查数据库表 core_resource 以获取包含模块版本的模块记录。这个资源记录是 Magento 如何知道它是否已经运行了模块设置脚本,或者确定它是否需要从旧版本运行升级脚本到新版本。

如果您从 core_resource 表中删除模块的记录,Magento 将在下次 Magento 生成页面时尝试执行您的设置脚本。

我还希望您需要删除die("Exit for now");从设置脚本中删除 ,以便它实际到达创建表的部分。如果设置脚本启动并调用 die() 函数并结束该脚本的执行,我认为它可能会继续创建 core_resource 记录,表明它已完成设置脚本并且不会再次运行它,除非您从core_resource 表。

您可以在 Magento 知识库中找到有关安装脚本的一些信息: Magento for Developers: Part 6 - Magento Setup Resources

您还可以检查模块配置 XML 文件以确保那里的版本与安装脚本文件名的版本匹配。

<modules>
    <Desbest_Showdown>
        <version>1</version>
    </Desbest_Showdown>
</modules>
<global>
    <resources>
        <showdown_setup>
            <setup>
                <module>Desbest_Showdown</module>
            </setup>
        </showdown_setup>
    </resources>
</global>

我想到的另一件事是文件/目录名称区分大小写。如果您在 Mac 上设置了一堆不区分大小写的文件系统的东西,一切正常,然后将文件移动到文件系统区分大小写的 linux 机器上,您将遇到找不到文件的问题。您列出了您的文件名app/code/local/Desbest/Showdown/sql/Showdown_setup/mysql4-install-1.php,我认为该目录Showdown_setup可能需要全部为小写showdown_setup

于 2012-08-14T20:56:00.577 回答
1

此问题中有用于调试非运行安装资源脚本的步骤。

于 2012-08-15T19:03:37.267 回答