原标题:opencart 提示错误 oc_session' doesn't exist 和 oc_cart' doesn't exist 问题
导读:
很多人在迁移网站的时候,喜欢把mysql文件夹下的data的数据直接打包复制,这样是不规范的。 以opencart为例,这样打包迁移,就会出错Fatal ...
很多人在迁移网站的时候,喜欢把mysql文件夹下的data的数据直接打包复制,这样是不规范的。 以opencart为例,这样打包迁移,就会出错
Fatal error: Uncaught Exception: Error: Table 'opencart302.oc_session' doesn't exist<br />Error No: 1146<br />SELECT `data` FROM `oc_session` WHERE session_id = '7d20e27e1a8ec9f19533f70f10' AND expire > 1520911611 in E:\htdocs\opencart302\upload\system\library\db\mysqli.php:40 Stack trace: #0 E:\htdocs\opencart302\upload\system\library\db.php(45): DB\MySQLi->query('SELECT `data` F...') #1 E:\htdocs\opencart302\upload\system\library\session\db.php(21): DB->query('SELECT `data` F...') #2 E:\htdocs\opencart302\upload\system\library\session.php(72): Session\DB->read('7d20e27e1a8ec9f...') #3 E:\htdocs\opencart302\upload\system\framework.php(106): Session->start('7d20e27e1a8ec9f...') #4 E:\htdocs\opencart302\upload\system\startup.php(104): require_once('E:\\htdocs\\ytaob...') #5 E:\htdocs\opencart302\upload\admin\index.php(19): start('admin') #6 {main} thrown in E:\htdocs\opencart302\upload\system\library\db\mysqli.php on line 40 Fatal error: Uncaught Exception: Error: Table 'opencart302.oc_session' doesn't exist<br />Error No: 1146<br />REPLACE INTO `oc_session` SET session_id = '7d20e27e1a8ec9f19533f70f10', `data` = '[]', expire = '2018-03-13 03:50:51' in E:\htdocs\opencart302\upload\system\library\db\mysqli.php:40 Stack trace: #0 E:\htdocs\opencart302\upload\system\library\db.php(45): DB\MySQLi->query('REPLACE INTO `o...') #1 E:\htdocs\opencart302\upload\system\library\session\db.php(32): DB->query('REPLACE INTO `o...') #2 E:\htdocs\opencart302\upload\system\library\session.php(81): Session\DB->write('7d20e27e1a8ec9f...', Array) #3 [internal function]: Session->close() #4 {main} thrown in E:\htdocs\opencart302\upload\system\library\db\mysqli.php on line 40
找不到 session和cart表,为什么呢?
因为这两张表是使用的InnoDB的Compact格式。这里可能有人会问Compact是什么?Compact行记录是在MySQL 5.0时被引入的,其设计目标是能高效存放数据。简单来说,如果一个页中存放的行数据越多,其性能就越高。所以当你打包数据文件的时候肯定是打包不出来的。
遇到问题就要解决,手动添加这两张表吧(opencar3.0可以直接添加)
DROP TABLE IF EXISTS `oc_cart`; CREATE TABLE `oc_cart` ( `cart_id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT, `api_id` int(11) NOT NULL, `customer_id` int(11) NOT NULL, `session_id` varchar(32) NOT NULL, `product_id` int(11) NOT NULL, `recurring_id` int(11) NOT NULL, `option` text NOT NULL, `quantity` int(5) NOT NULL, `date_added` datetime NOT NULL, PRIMARY KEY (`cart_id`), KEY `cart_id` (`api_id`,`customer_id`,`session_id`,`product_id`,`recurring_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci; DROP TABLE IF EXISTS `oc_session`; CREATE TABLE `oc_session` ( `session_id` varchar(32) NOT NULL, `data` text NOT NULL, `expire` datetime NOT NULL, PRIMARY KEY (`session_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci;
那么正确迁移数据库的方式是什么样的?
导出SQL文件,这个才是正确操作
还没有评论,来说两句吧...