2013-07-15 69 views
0

我正在從Magento U在線學習一個免費教程,並且已經進入了安裝模塊的階段。由於sql錯誤信息無法安裝模塊

目前我花了大約三個小時嘗試不同的替代方案來克服Sql錯誤(在第1行)我不斷收到。我甚至刪除了Magento的特定函數,並在測試數據庫的mysql工作臺上運行它,它在哪裏工作。

的安裝文件運行時,我面臨着

Syntax error or access violation: 1064 You have an error in your SQL syntax; 

錯誤

我也認爲,我可以有我的模塊中設置不正確其它地方的文件,但我無法看到什麼是錯誤。最後,我也試圖使在Magento更詳細的SQL錯誤消息,但還沒有任何運氣

我的代碼如下

培訓/動物/ SQL/training_animal_setup/mysql4安裝-0.1.0。 PHP

<?php 
$installer = $this; 

$installer->startSetup(); 

$installer->run(" 
DROP TABLE IF EXISTS{$installer->getTable('training/animal')}; 
CREATE TABLE {$installer->getTable('training/animal')} (
    entity_id INT(11) UNSIGNED AUTO_INCREMENT PRIMARY KEY, 
    name VARCHAR(255) NOT NULL DEFAULT '', 
    type VARCHAR(255) NOT NULL DEFAULT '', 
    edible TINYINT(1) UNSIGNED NOT NULL DEFAULT 1, 
    comments TEXT NULL, 
    updated_at DATETIME, 
    created_at DATETIME 
) Engine=InnoDB DEFAULT Charset=UTF8; 
"); 

$installer->endSetup(); 

培訓/動物的/ etc/config.etc

<config> 
<modules> 
    <Training_Animal> 
     <version>0.1.0</version> 
    </Training_Animal> 
</modules> 

<global> 
    <models> 
     <training> 
      <class>Training_Animal_Model</class> 
      <resourceModel>training_animal_resource</resourceModel> 
     </training> 
     <training_animal_resource> 
      <class>Training_Animal_Model_Mysql4</class> 
      <entities> 
       <animal><table>training_animal_entity</table></animal> 
      </entities> 
     </training_animal_resource> 
    </models> 

    <resources> 
     <training_animal_setup> 
      <setup> 
       <module>Training_Animal</module> 
       <class>Mage_Core_Model_Resource_Setup</class> 
      </setup> 
     </training_animal_setup> 
    </resources> 
</global> 

<frontend> 
    <routers> 
     <animal> 
      <use>standard</use> 
      <args> 
       <module>Training_Animal</module> 
       <frontName>animal</frontName> 
      </args> 
     </animal> 
    </routers> 
</frontend> 

我也有其他的三個文件

培訓/動物/型號/ Mysql4 /動物/ Collection.php

培訓/動物/型號/ Mysql4/Animal.php

培訓/動物/模型/動物.PHP

,但尚未公佈,由於錯誤信息,節省空間,如果需要他們,請讓我知道

+0

從未使用過magento,但通常情況下,您可以在PHP-mysql代碼中的一個' - > exec()'類型調用中不**有多個查詢。這是一種反注入攻擊防禦機制。例如通過兩個獨立的' - > run()'調用發出你的DROP和CREATE查詢。 –

回答

0

我認爲這個問題是這一行:

DROP TABLE IF EXISTS{$installer->getTable('training/animal')}; 

EXISTS{$installer->getTable('training/animal')}之間加一個空格。