A-A+
ecshop 出现 MySQL server error report 的错误提示
很显然,又是 mysql 出现的问题了,这是在转移空间到新空间后出现的问题了,将空间以及 mysql 搬到新空间上面的时候,时不时的出现如下的错误:
- MySQL server error report:Array ( [0] => Array ( [message] => MySQL Query Error ) [1] => Array ( => Insert INTO `test`.`ecs_sessi**` (sesskey, expiry, ip, data) VALUES ('8a3107988bf98cc9a5079fdfbe766120′, '1278128679′, '127.0.0.1′, 'a:0:{}') ) [2] => Array ( [error] => Table 'test.ecs_sessi**' doesn't exist ) [3] => Array ( [errno] => 1146 ) ) ,
整个 ecshop 的文件应该没什么问题,因为是整个打包进去的,而出现这种错误是在备份的时候少备份了两个表,这在上面的提示错误中也可以看到,一个是 ecs_sessi** ,一个是 ecs_sessi**_data,找到原因后就容易解决问题了,只需要将这两个表重新建立起来就可以了,将如下的 sql 语句在 phpmyadmin 中执行一下即可,也可以在 ecshop 》 数据库管理 》 sql 查询的输入框里提交即可,sql 代码如下:
- CREATE TABLE IF NOT EXISTS `ecs_sessi**` (
- `sesskey` char(32) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '',
- `expiry` int(10) unsigned NOT NULL DEFAULT '0',
- `userid` mediumint(8) unsigned NOT NULL DEFAULT '0',
- `adminid` mediumint(8) unsigned NOT NULL DEFAULT '0',
- `ip` char(15) NOT NULL DEFAULT '',
- `user_name` varchar(60) NOT NULL,
- `user_rank` tinyint(3) NOT NULL,
- `discount` decimal(3,2) NOT NULL,
- `email` varchar(60) NOT NULL,
- `data` char(255) NOT NULL DEFAULT '',
- PRIMARY KEY (`sesskey`),
- KEY `expiry` (`expiry`)
- ) ENGINE=MEMORY DEFAULT CHARSET=utf8;
- CREATE TABLE IF NOT EXISTS `ecs_sessi**_data` (
- `sesskey` varchar(32) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '',
- `expiry` int(10) unsigned NOT NULL DEFAULT '0',
- `data` longtext NOT NULL,
- PRIMARY KEY (`sesskey`),
- KEY `expiry` (`expiry`)
- ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
注意这里的前缀,使用的是 ecs_,可以更改为你自己的前缀,另外这里使用的是 utf8字符集,如果你的是 gbk 的话,可以自行修改。