Qu'est-ce qui empêche un script d'installation pour fonctionner dans Magento 1.8?
-
16-10-2019 - |
Question
Je suis en train de créer un module simple afin d'ajouter des commentaires des clients à la caisse, je sais qu'il ya quelques billets de faveur sur le marché qui le font déjà, mais je dois étendre la fonctionnalité ainsi décidé d'aller à ce sujet à partir de zéro .
Le problème est que je ne peux même pas obtenir mon script d'installation pour exécuter et créer les tables nécessaires. J'ai la révision du code pendant des heures, mais ne peut le faire au travail !!!
Toute aide serait bien accueillie ...
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();
Je ne sais pas ce qui ne va pas avec mon script d'installation soit ou mon config.xml. Quelle serait la raison principale de ce ne pas exécuter et créer les tables nécessaires?
+-------------------------+------------+--------------+
| 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 |
La solution
Dans votre 3ème colonne:
addColumn(
'comment',
Varien_Db_Ddl_Table::TYPE_INTEGER,
'64k',
array(),
'Comment'
)
vous avez type_int
, Il semble que vous cherchez un type_text
que vous définissez comme un champ de commentaire avec 64k limite de caractères. Lorsque cela échoue, il ne sera pas instancier correctement la table ou l'échec.
Autres conseils
Constaté que mon dossier avait namespace_checkoutcomments_setup
quand il avait besoin d'être checkoutcomments_setup
pour mon script à exécuter.