View Issue Details
| ID | Project | Category | View Status | Date Submitted | Last Update |
|---|---|---|---|---|---|
| 0006265 | OXID eShop (all versions) | 4.01. Database handling | public | 2015-11-17 18:47 | 2015-12-07 14:12 |
| Reporter | robert blank | Assigned To | |||
| Priority | normal | Severity | major | Reproducibility | always |
| Status | resolved | Resolution | fixed | ||
| Product Version | 4.9.6 / 5.2.6 | ||||
| Fixed in Version | 4.9.7 / 5.2.7 | ||||
| Summary | 0006265: Adding additional multi language tables breaks updateViews, after a certain number of languages is installed | ||||
| Description | oxRegistry::getConfig()->getConfigParam("iLangPerTable") defines the number of languages, which are stored in each "multilang table". When a new language is added to a shop, a whole bunch of new tables is created, if the number of languages is greater than iLangPerTable (e.g. oxarticles_set1) When an additional multilanguage table xy is added after these tables are created, the shop assumes that the xy_set1 also exists and throws an Exception, when updateViews is called | ||||
| Steps To Reproduce | 1. Install OXID eShop EE 5.2.6 2. Add a total of 9 languages 3. Create a multilanguage table with the attached sql script. 4. Add the name of this table to the array $this->aMultiLangTables in config.inc.php 5. Run updateViews 6. See the EXCEPTION.log | ||||
| Additional Information | application/models/oxshop.php:616 will throw an Exception, if table does not exist. | ||||
| Tags | No tags attached. | ||||
| Attached Files | EXCEPTION_LOG.txt (2,336 bytes)
oxConnectionException-oxException (time: 2015-11-17 18:44:29): [1146]: mysql error: [1146: Table 'ee_526.foo_set1' doesn't exist] in EXECUTE (SHOW COLUMNS FROM foo_set1, ) with user root
Stack Trace: #0 /var/www/OXID_ESHOP_EE_5.2.6_SNAPSHOT/core/adodblite/adodbSQL_drivers/mysql/mysql_driver.inc(369): adodb_throw('mysql', 'EXECUTE', 1146, 'Table 'paypalpl...', 'SHOW COLUMNS FR...', false, Object(object_ADOConnection))
#1 /var/www/OXID_ESHOP_EE_5.2.6_SNAPSHOT/core/adodblite/adodb.inc.php(316): mysql_driver_ADOConnection->do_query('SHOW COLUMNS FR...', -1, -1, false)
#2 /var/www/OXID_ESHOP_EE_5.2.6_SNAPSHOT/core/adodblite/adodbSQL_drivers/mysql/mysql_meta_module.inc(229): ADOConnection->Execute('SHOW COLUMNS FR...')
#3 /var/www/OXID_ESHOP_EE_5.2.6_SNAPSHOT/core/oxlegacydb.php(347): mysql_meta_ADOConnection->MetaColumns('foo_set1')
#4 /var/www/OXID_ESHOP_EE_5.2.6_SNAPSHOT/core/oxdbmetadatahandler.php(57): oxLegacyDb->metaColumns('foo_set1')
#5 /var/www/OXID_ESHOP_EE_5.2.6_SNAPSHOT/application/models/oxshop.php(616): oxDbMetaDataHandler->getFields('foo_set1')
#6 /var/www/OXID_ESHOP_EE_5.2.6_SNAPSHOT/application/models/oxshop.php(888): oxShop->_getViewSelectMultilang('foo')
#7 /var/www/OXID_ESHOP_EE_5.2.6_SNAPSHOT/application/models/oxshop.php(859): oxShop->createViewQuery('foo')
#8 /var/www/OXID_ESHOP_EE_5.2.6_SNAPSHOT/application/models/oxshop.php(571): oxShop->_prepareViewsQueries()
#9 /var/www/OXID_ESHOP_EE_5.2.6_SNAPSHOT/core/oxdbmetadatahandler.php(524): oxShop->generateViews(false, Array)
#10 /var/www/OXID_ESHOP_EE_5.2.6_SNAPSHOT/application/controllers/admin/tools_list.php(38): oxDbMetaDataHandler->updateViews()
#11 /var/www/OXID_ESHOP_EE_5.2.6_SNAPSHOT/core/oxview.php(539): Tools_List->updateViews()
#12 /var/www/OXID_ESHOP_EE_5.2.6_SNAPSHOT/core/oxshopcontrol.php(358): oxView->executeFunction('updateViews')
#13 /var/www/OXID_ESHOP_EE_5.2.6_SNAPSHOT/core/oxshopcontrol.php(131): oxShopControl->_process('tools_list', 'updateViews', NULL, NULL)
#14 /var/www/OXID_ESHOP_EE_5.2.6_SNAPSHOT/core/oxid.php(32): oxShopControl->start()
#15 /var/www/OXID_ESHOP_EE_5.2.6_SNAPSHOT/index.php(18): Oxid::run()
#16 /var/www/OXID_ESHOP_EE_5.2.6_SNAPSHOT/admin/index.php(19): require_once('/var/www/OXID_E...')
#17 {main}
Connection Adress -->
Connection Error -->
---------------------------------------------
create_table_foo.txt (624 bytes)
CREATE TABLE IF NOT EXISTS `foo` ( `OXID` char(32) CHARACTER SET latin1 COLLATE latin1_general_ci NOT NULL COMMENT 'Item id', `FOOTITLE` varchar(128) NOT NULL DEFAULT '' COMMENT 'Title (multilanguage)', `FOOTITLE_1` varchar(128) NOT NULL DEFAULT '', `FOOTITLE_2` varchar(128) NOT NULL DEFAULT '', `FOOTITLE_3` varchar(128) NOT NULL DEFAULT '', `FOOTITLE_4` varchar(128) NOT NULL DEFAULT '', `FOOTITLE_5` varchar(128) NOT NULL DEFAULT '', `FOOTITLE_6` varchar(128) NOT NULL DEFAULT '', `FOOTITLE_7` varchar(128) NOT NULL DEFAULT '', PRIMARY KEY (`OXID`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='foo'; | ||||
| Theme | Not defined | ||||
| Browser | Not defined | ||||
| PHP Version | Not defined | ||||
| Database Version | Not defined | ||||