2012-08-12 43 views
2

SQLSTATE [42S02]:未找到基本表或視圖:1146表'desbest_full2.showdown_matches'沒有找到存在使用我的新magento模塊後:SQLSTATE [42S02]:未找到基本表或視圖:1146表XXX確實

可是爲什麼,如果我有內部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(); 

MySQL的安裝腳本的模塊對我原先的Magento安裝工作。

+0

嗨,最好,你的config.xml是什麼樣的? – ivantedja 2012-08-12 11:23:53

+0

這是。 https://gist.github.com/8a2da27d4f71834292f6 – desbest 2012-08-12 11:33:06

+0

註釋行是否有效? - 創建表如果不存在'showdown_matches'。你有沒有得到這個錯誤信息,然後你修復它,然後刷新頁面(並且錯誤仍然存​​在?)。如果是這樣,看看你的網址,如果你正在訪問'local.com/errors/report.php?id = ....' - >那就是問題所在。這是一個靜態頁面。我發現你的代碼沒有錯(如果我沒有錯過任何東西)。 – ivantedja 2012-08-12 16:15:17

回答

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文件系統區分大小寫的Linux文件夾中,您將遇到無法找到文件的問題。你列出你的文件名爲app/code/local/Desbest/Showdown/sql/Showdown_setup/mysql4-install-1.php,我認爲目錄Showdown_setup可能需要全部小寫showdown_setup

+0

我同意區分大小寫的事情。注意區分大小寫問題是一個好習慣。 – ivantedja 2012-08-15 16:17:22

+0

** 1。'core_resource'內沒有數據庫的showdown行。 ** 2。**因爲我正在製作插件,所以它應該有'die()',所以它在那裏進行測試。根據個人經驗,不,它不會創建'core_resource'數據庫行。 ** 3。**我已將'sql/Showdown_setup'重命名爲'sql/showdown_setup',並沒有任何效果。 ** 4。** config.xml中的版本號和'mysql4-install-1.php'文件相匹配。 – desbest 2012-08-15 18:47:52

+1

我已經想出了現在的問題。這是文件夾的情況。我將'Showdown_setup'改爲'showdown_setup',現在它可以工作! – desbest 2012-08-15 19:23:53

1

this question中的步驟用於調試未運行的設置資源腳本。

相關問題