Question

Je suis en train de mettre à jour magento ce-1.4.0.1 à ce-1,8. Le problème est que magento converti l'ancienne base de données de la sales_order manque et à cause de cela, je ne peux pas entrer dans la zone d'administration.

La question est ce qui supprime la table sales_order?

J'ai désactivé tous les modules personnalisés, dossier modèle Renommés, / app / codes / communauté et / app / codes / local pour vous assurer qu'ils font mal rien. Ce que je fais est:

  • clair db
  • importer mon ancien db
  • tables de mise à jour InnoDB
  • activer la journalisation ./n98-magerun.phar dev:log --on --global
  • Index de passage à temps réel php shell/indexer.php --mode-realtime
  • cache clair: rm -fR var/*
  • appel index.php

Avant d'appeler index.php sales_order existe encore. Après cela, il est parti. Ce que je suis absent? Comment puis-je trouver ce qui est la cause?

Je suppose que des changements dans /skin et /media ne pourrait être lié à cela, non? Il quelques changements dans app/design toujours actif. Est-ce mauvais?

Je l'ai fait une recherche pour « dropTable » dans la racine Magento, mais ne trouve pas quelque chose filaire:

$ grep -R "dropTable" *
app/code/core/Mage/Catalog/Model/Resource/Product/Flat/Indexer.php:            $this->_getWriteAdapter()->dropTable($this->getFlatTableName($storeId));
app/code/core/Mage/Catalog/Model/Resource/Category/Flat.php:        $_writeAdapter->dropTable($tableName);
app/code/core/Mage/Catalog/Model/Resource/Category/Flat.php:            $this->_getWriteAdapter()->dropTable($this->getMainStoreTable($store));
lib/Varien/Db/Adapter/Interface.php:    public function dropTable($tableName, $schemaName = null);
lib/Varien/Db/Adapter/Pdo/Mysql.php:    public function dropTable($tableName, $schemaName = null)

Message d'erreur dans / admin après conversion:

a:5:{i:0;s:107:"SQLSTATE[42S02]: Base table or view not found: 1146 Table 'shop.sales_order' doesn't exist";i:1;s:4477:"#0 /lib/Varien/Db/Statement/Pdo/Mysql.php(110): Zend_Db_Statement_Pdo->_execute(Array)
#1 /app/code/core/Zend/Db/Statement.php(291): Varien_Db_Statement_Pdo_Mysql->_execute(Array)
#2 /lib/Zend/Db/Adapter/Abstract.php(479): Zend_Db_Statement->execute(Array)
#3 /lib/Zend/Db/Adapter/Pdo/Abstract.php(238): Zend_Db_Adapter_Abstract->query('SELECT SUM((IFN...', Array)
#4 /lib/Varien/Db/Adapter/Pdo/Mysql.php(428): Zend_Db_Adapter_Pdo_Abstract->query('SELECT SUM((IFN...', Array)
#5 /lib/Zend/Db/Adapter/Abstract.php(734): Varien_Db_Adapter_Pdo_Mysql->query('SELECT SUM((IFN...', Array)
#6 /lib/Varien/Data/Collection/Db.php(734): Zend_Db_Adapter_Abstract->fetchAll('SELECT SUM((IFN...', Array)
#7 /app/code/core/Mage/Core/Model/Resource/Db/Collection/Abstract.php(521): Varien_Data_Collection_Db->_fetchAll('SELECT SUM((IFN...', Array)
#8 /lib/Varien/Data/Collection/Db.php(566): Mage_Core_Model_Resource_Db_Collection_Abstract->getData()
#9 /app/code/core/Mage/Adminhtml/Block/Dashboard/Totals.php(70): Varien_Data_Collection_Db->load()
#10 /app/code/core/Mage/Core/Block/Abstract.php(261): Mage_Adminhtml_Block_Dashboard_Totals->_prepareLayout()
#11 /app/code/core/Mage/Core/Model/Layout.php(456): Mage_Core_Block_Abstract->setLayout(Object(Mage_Core_Model_Layout))
#12 /app/code/core/Mage/Adminhtml/Block/Dashboard.php(50): Mage_Core_Model_Layout->createBlock('adminhtml/dashb...')
#13 /app/code/core/Mage/Core/Block/Abstract.php(261): Mage_Adminhtml_Block_Dashboard->_prepareLayout()
#14 /app/code/core/Mage/Core/Model/Layout.php(456): Mage_Core_Block_Abstract->setLayout(Object(Mage_Core_Model_Layout))
#15 /app/code/core/Mage/Core/Model/Layout.php(472): Mage_Core_Model_Layout->createBlock('adminhtml/dashb...', 'dashboard')
#16 /app/code/core/Mage/Core/Model/Layout.php(239): Mage_Core_Model_Layout->addBlock('adminhtml/dashb...', 'dashboard')
#17 /app/code/core/Mage/Core/Model/Layout.php(205): Mage_Core_Model_Layout->_generateBlock(Object(Mage_Core_Model_Layout_Element), Object(Mage_Core_Model_Layout_Element))
#18 /app/code/core/Mage/Core/Model/Layout.php(210): Mage_Core_Model_Layout->generateBlocks(Object(Mage_Core_Model_Layout_Element))
#19 /app/code/core/Mage/Core/Controller/Varien/Action.php(344): Mage_Core_Model_Layout->generateBlocks()
#20 /app/code/core/Mage/Core/Controller/Varien/Action.php(269): Mage_Core_Controller_Varien_Action->generateLayoutBlocks()
#21 /app/code/core/Mage/Adminhtml/Controller/Action.php(275): Mage_Core_Controller_Varien_Action->loadLayout(NULL, true, true)
#22 /app/code/core/Mage/Adminhtml/controllers/DashboardController.php(40): Mage_Adminhtml_Controller_Action->loadLayout()
#23 /app/code/core/Mage/Core/Controller/Varien/Action.php(417): Mage_Adminhtml_DashboardController->indexAction()
#24 /app/code/core/Mage/Core/Controller/Varien/Router/Standard.php(250): Mage_Core_Controller_Varien_Action->dispatch('index')
#25 /app/code/core/Mage/Core/Controller/Varien/Front.php(172): Mage_Core_Controller_Varien_Router_Standard->match(Object(Mage_Core_Controller_Request_Http))
#26 /app/code/core/Mage/Core/Model/App.php(354): Mage_Core_Controller_Varien_Front->dispatch()
#27 /app/Mage.php(683): Mage_Core_Model_App->run(Array)
#28 /index.php(118): Mage::run('', 'store')
Était-ce utile?

La solution

Le tableau de sales_order et d'autres tables liées aux ventes sont lâchés dans le script de mise à niveau qui modifie la structure des entités de vente de EAV à plat.
Le fichier est réel:. app/code/core/Mage/Sales/sql/sales_setup/mysql4-upgrade-1.3.99-1.4.0.0.php
Vers la fin du fichier il y a ce code:

// Remove previous tables
$tablesToDrop = array(
    'sales_order_entity_decimal',
    'sales_order_entity_datetime',
    'sales_order_entity_int',
    'sales_order_entity_text',
    'sales_order_entity_varchar',
    'sales_order_entity',
    'sales_order_decimal',
    'sales_order_datetime',
    'sales_order_int',
    'sales_order_text',
    'sales_order_varchar',
    'sales_order'
);

foreach ($tablesToDrop as $table) {
    $table = $installer->getTable($table);
    if (!$installer->tableExists($table)) {
        continue;
    }
    $installer->getConnection()->query(
        'DROP TABLE ' . $installer->getConnection()->quoteIdentifier($table)
    );
}

Mais le fait qu'elles soient abandonnées ne devraient pas être un problème. Je pense que le problème vient d'un module personnalisé qui utilise la table sales_order directement, sans l'emballer dans ->getTable('sales/order'). ou il est utilisé comme celui-ci ->getTable('sales_order').
Je suggère de désactiver vos modules personnalisés d'abord (spécialement ceux liés aux ventes).
Si je ne me trompe pas et la mise à niveau, vous ne serez pas en mesure d'utiliser le module en question de toute façon.

[EDIT] Et vider le cache après la mise à niveau.

Licencié sous: CC-BY-SA avec attribution
Non affilié à magento.stackexchange
scroll top