ecshop 網店程序在搬遷空間或恢復備份或更換域名出現 MySQL server error report:Array ( [0] => Array ( [message] => MySQL Query Error ) [1] => Array ( [sql] => Insert INTO `test`.`ecs_sessions` (sesskey, expiry, ip, data) VALUES ('8a3107988bf98cc9a5079fdfbe766120', '1278128679', '127.0.0.1', 'a:0:{}') ) [2] => Array ( [error] => Table 'test.ecs_sessions' doesn't exist ) [3] => Array ( [errno] => 1146 ) ) ,是因為備份時少了兩個表。
解決方法如下:
1.關閉網站(防止新的訪問更新數據庫造成數據不完整)
2.進入ecshop后臺備份數據庫(備份前可以先清理下數據庫中的碎片,然后選擇完全備份)
3.下載整站數據(可以用主機上帶的rar打包解壓功能將整站打包,這樣下載比較快)
4.上傳整站數據到新空間(盡量保證新空間的php與mysql版本與原空間相同,考慮兼容性,特別是數據庫的兼容性。如果上傳的是整站壓縮包,需要主機支持rar解壓),期間的域名的DNS解析等修改跳過
5.接下來是恢復數據庫,可以采用2個方法
a.上傳ecshop的安裝程序,默認安裝后進入后來進行恢復操作
b.用主機上的phpmyadmin進行恢復操作(如果數據比較多,sql文件比較多,這個比較麻煩的)
6.恢復完成后打開網站,發現出錯:出錯關鍵字 sesskey 1146
查看了現在的數據庫與原來數據庫表的差別,發現少了兩個表(默認前綴)
ecs_sessions 跟 ecs_sessions_data
建立它們(只能用phpmyadmin)
SQL代碼
程序代碼
Create TABLE `ecs_sessions` (
`sesskey` varchar(32) binary 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` varchar(15) NOT NULL default '',
`user_name` varchar(60) NOT NULL default '',
`user_rank` tinyint(3) NOT NULL default '0',
`discount` decimal(3,2) NOT NULL default '0.00',
`email` varchar(60) NOT NULL default '',
`data` varchar(255) NOT NULL default '',
PRIMARY KEY (`sesskey`),
KEY `expiry` (`expiry`)
) TYPE=HEAP;
Create TABLE `ecs_sessions_data` (
`sesskey` varchar(32) binary NOT NULL default '',
`expiry` int(10) unsigned NOT NULL default '0',
`data` longtext NOT NULL,
PRIMARY KEY (`sesskey`),
KEY `expiry` (`expiry`)
) TYPE=MyISAM;
然后再次打開,問題解決
新聞熱點
疑難解答