Was verhindert, dass ein Install-Skript in Magento 1.8 ausgeführt wird?
-
16-10-2019 - |
Frage
Ich versuche, ein einfaches Modul zu erstellen, um Kunden Kommentare an der Kasse hinzuzufügen. Ich weiß, dass es einige Werbegeschenke auf dem Markt gibt, die dies bereits tun, aber ich muss die Funktionalität weiter erweitern.
Das Problem ist, dass ich nicht einmal mein Installationsskript ausführen und die erforderlichen Tabellen erstellen kann. Ich habe den Code stundenlang überarbeitet, kann aber nicht zum Laufen bringen !!!
Jede Hilfe wäre sehr willkommen ...
config.xml
<?xml version="1.0"?>
<config>
<modules>
<Namespace_CheckoutComments>
<version>0.1.0</version>
</Namespace_CheckoutComments>
</modules>
<global>
<resources>
<checkoutcomments_setup>
<setup>
<module>Namespace_CheckoutComments</module>
</setup>
</checkoutcomments_setup>
</resources>
<models>
<checkoutcomments>
<class>Namespace_CheckoutComments_Model</class>
<resourceModel>checkoutcomments_resource</resourceModel>
</checkoutcomments>
<checkoutcomments_resource>
<class>Namespace_CheckoutComments_Model_Resource</class>
<entities>
<comments_table>
<table>checkout_comments</table>
</comments_table>
</entities>
</checkoutcomments_resource>
</models>
</global>
</config>
SQL/Namespace_CheckoutComments_Setup/Install-0.1.0.php
<?php
/* @var $installer Mage_Core_Model_Resource_Setup */
$installer = $this;
$installer->startSetup();
$table = $installer->getConnection()->newTable($installer->getTable('checkoutcomments/comments_table'))
->addColumn('comment_id', Varien_Db_Ddl_Table::TYPE_INTEGER, null, array(
'identity' => true,
'unsigned' => true,
'nullable' => false,
'primary' => true,
), 'Comment ID')
->addColumn('order_id', Varien_Db_Ddl_Table::TYPE_INTEGER, null, array(
'unsigned' => true,
'nullable' => false,
), 'Real Order ID')
->addColumn('comment', Varien_Db_Ddl_Table::TYPE_INTEGER, '64k', array(
), 'Comment')
->addForeignKey(
$installer->getFkName(
'checkoutcomments/comments_table',
'order_id',
'sales/order',
'entity_id'
),
'order_id', $installer->getTable('sales/order'), 'entity_id',
Varien_Db_Ddl_Table::ACTION_CASCADE, Varien_Db_Ddl_Table::ACTION_CASCADE)
->setComment('Checkout Comments');
$installer->getConnection()->createTable($table);
$installer->endSetup();
Ich habe keine Ahnung, was mit meinem Install -Skript oder meiner config.xml los ist. Was wäre der Hauptgrund dafür, dass dies die erforderlichen Tabellen nicht ausführt und erstellt?
+-------------------------+------------+--------------+
| code | version | data_version |
+-------------------------+------------+--------------+
| adminnotification_setup | 1.6.0.0 | 1.6.0.0 |
| admin_setup | 1.6.1.1 | 1.6.1.1 |
| api2_setup | 1.0.0.0 | 1.0.0.0 |
| api_setup | 1.6.0.1 | 1.6.0.1 |
| backup_setup | 1.6.0.0 | 1.6.0.0 |
| bundle_setup | 1.6.0.0.1 | 1.6.0.0.1 |
| captcha_setup | 1.7.0.0.0 | 1.7.0.0.0 |
| catalogindex_setup | 1.6.0.0 | 1.6.0.0 |
| cataloginventory_setup | 1.6.0.0.2 | 1.6.0.0.2 |
| catalogrule_setup | 1.6.0.3 | 1.6.0.3 |
| catalogsearch_setup | 1.6.0.0 | 1.6.0.0 |
| catalog_setup | 1.6.0.0.18 | 1.6.0.0.18 |
| checkoutcomments_setup | 0.0.1 | 0.0.1 |
| checkout_setup | 1.6.0.0 | 1.6.0.0 |
Lösung
In Ihrer 3. Spalte:
addColumn(
'comment',
Varien_Db_Ddl_Table::TYPE_INTEGER,
'64k',
array(),
'Comment'
)
Sie haben type_int
, sieht so aus, als würden Sie nach einem suchen type_text
Da definieren Sie es als Kommentarfeld mit 64K -Charaktergrenze. Wenn dies fehlschlägt, wird die Tabelle nicht richtig instanziiert oder fehlschlägt.
Andere Tipps
Fand heraus, dass mein Ordner hatte namespace_checkoutcomments_setup
Wenn es sein musste checkoutcomments_setup
Damit mein Skript ausgeführt werden kann.