1

I create php script for magento database backup that work well for Single store site but showing error for multi-store

//Magento Database Backup php script
 error_reporting(E_ALL ^ E_NOTICE);
 ini_set('display_errors', 1);
 ini_set('memory_limit', '1512M');
 // Get Magento Application
 require_once 'app/Mage.php';
 Mage::app('default');
 //Mage::app('main');
 // get Magento config
 $config = Mage::getConfig()->getResourceConnectionConfig("default_setup");
 $dbinfo = array(
 "host" => $config->host,
 "user" => $config->username,
 "pass" => $config->password,
 "dbname" => $config->dbname
 );
 // Database Config
 $db_host = $dbinfo["host"];
 $db_user = $dbinfo["user"];
 $db_pass = $dbinfo["pass"];
 $db_name = $dbinfo["dbname"];
 //echo $db_name; die();
 // filename 
 $backup_file = $db_name ."-". date("ymdHis") . ".zip";
 $command = "mysqldump --database " . $db_name . " -u ". $db_user . " -p'". $db_pass . "' | gzip > " . $backup_file;
 echo 'command executing is ' . $command . '<br/>' ;
 $output = shell_exec($command);
 echo 'Finished!<br/>' ;
 //shell_exec("mysqldump --opt --default-character-set=utf8 -uuser {$backup_db} > {$sql_name}")

Error For Multi-store as follows:

Fatal error: Uncaught exception 'Mage_Core_Model_Store_Exception' in 
/public_html/app/code/core/Mage/Core/Model/App.php:1357 Stack trace: #0 
/public_html/app/code/core/Mage/Core/Model/App.php(842): Mage_Core_Model_App->throwStoreException() #1 /public_html/app/code/core/Mage/Core/Model/App.php(491): Mage_Core_Model_App->getStore() #2 /home
/public_html/app/code/core/Mage/Core/Model/App.php(274): Mage_Core_Model_App->_initCurrentStore('default', 'store') #3 
/public_html/app/Mage.php(616): Mage_Core_Model_App->init('default', 'store', Array) #4
 /public_html/mege_dbbackup.php(9): Mage::app('default') #5 {main} thrown in 
 /public_html/app/code/core/Mage/Core/Model/App.php on line 1357 
asked May 2, 2015 at 17:24
1
  • So you have ssh access? Commented May 2, 2015 at 23:57

2 Answers 2

1

When you do a mysql dump, you're not just dumping a single store but the entire Magento database. Your issue is that

require_once 'app/Mage.php';
 Mage::app('default');

You're loading 'default' as the scope. This throws an exception:

/**
 * Initialize currently ran store
 *
 * @param string $scopeCode code of default scope (website/store_group/store code)
 * @param string $scopeType type of default scope (website/group/store)
 * @return unknown_type
 */
protected function _initCurrentStore($scopeCode, $scopeType)
{
 Varien_Profiler::start('mage::app::init::stores');
 $this->_initStores();
 Varien_Profiler::stop('mage::app::init::stores');
 if (empty($scopeCode) && !is_null($this->_website)) {
 $scopeCode = $this->_website->getCode();
 $scopeType = 'website';
 }
 switch ($scopeType) {
 case 'store':
 $this->_currentStore = $scopeCode;
 break;
 case 'group':
 $this->_currentStore = $this->_getStoreByGroup($scopeCode);
 break;
 case 'website':
 $this->_currentStore = $this->_getStoreByWebsite($scopeCode);
 break;
 default:
 $this->throwStoreException();
 }

Just leave it blank as in:

 require_once 'app/Mage.php';
 Mage::app();
answered May 3, 2015 at 0:52
1
  • great!! that is work fine Commented May 3, 2015 at 6:48
0

Have you just simply tried by goto admin System>> Tool>> Backup , and there you can take database backup.

answered May 2, 2015 at 18:09

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.