我们的一个客户就有更新他的网站的问题。问题是“更新”表在数据库中已成为损坏。
我们为他找到了一个解决办法,但它需要运行一个查询在phpMyAdmin。他不熟悉的过程运行数据库查询之前,所以我们创建了本教程。
在一步一步的教程中,我们将描述问题,演示如何解决它。
问题
- 将组件- > Joomla更新导致这个错误:
An error has occurred.
1146 Table `updates` doesn't exist SQL=SELECT DISTINCT update_site_id FROM #__updates WHERE `update_site_id` IN ( SELECT update_site_id FROM #__update_sites WHERE `last_check_timestamp` IS NULL OR `last_check_timestamp` <= '1493997061')
- 要扩展- >管理- >数据库导致这个错误:
Table 'updates' does not have column 'infourl'. (From file 2.5.0-2012-01-10.sql.)
Table 'updates' should not have column 'categoryid'. (From file 3.0.0.sql.)
Table 'updates' does not have column 'extra_query'. (From file 3.2.2-2013-12-22.sql.)
Table 'updates' does not have column 'version' with type varchar(32). (From file 3.2.2-2014-01-18.sql.)
- 使用修复按钮不修复它。相反,它导致这个错误:
Error
Table 'updates' doesn't exist SQL=SHOW COLUMNS IN `#__updates` WHERE field = 'infourl'
Table 'updates' doesn't exist SQL=SHOW COLUMNS IN `#__updates` WHERE Field = 'categoryid'
Table 'updates' doesn't exist SQL=SHOW COLUMNS IN `#__updates` WHERE field = 'extra_query'
Table 'updates' doesn't exist SQL=SHOW COLUMNS IN `#__updates` WHERE field = 'version' AND type = 'varchar(32)'
解决方案
在这一点上,我们需要一个数据库解决方案。
- 使用您的主机的控制面板来访问phpMyAdmin:
- 点击数据库和访问数据库:
- 转到SQL选项卡,并添加以下查询:
DROP table IF EXISTS jos_updates;
CREATE TABLE `jos_updates` (
`update_id` int(11) NOT NULL AUTO_INCREMENT,
`update_site_id` int(11) DEFAULT '0',
`extension_id` int(11) DEFAULT '0',
`name` varchar(100) DEFAULT '',
`description` text NOT NULL,
`element` varchar(100) DEFAULT '',
`type` varchar(20) DEFAULT '',
`folder` varchar(20) DEFAULT '',
`client_id` tinyint(3) DEFAULT '0',
`version` varchar(32) DEFAULT '',
`data` text NOT NULL,
`detailsurl` text NOT NULL,
`infourl` text NOT NULL,
`extra_query` VARCHAR(1000) DEFAULT '',
PRIMARY KEY (`update_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Available Updates';
- 在上面的查询中,“jos”替换为您的表前缀(不含下划线)
- 如果你不确定你的数据库表前缀是什么,你可以找到它在全局配置的服务器选项卡。
- 点击后,您应该看到一条成功消息类似如下: