这是一个关于MySQL“僵尸”表的后续表,不能删除我在模式mysql中要求的一个stream氓表。
长话短说:
现在我在information_schema中find了一行:
mysql> select * from INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'general_log'; +---------------+--------------+-------------+------------+--------+---------+------------+------------+----------------+-------------+-----------------+--------------+-----------+----------------+-------------+-------------+------------+-----------------+----------+----------------+---------------+ | TABLE_CATALOG | TABLE_SCHEMA | TABLE_NAME | TABLE_TYPE | ENGINE | VERSION | ROW_FORMAT | TABLE_ROWS | AVG_ROW_LENGTH | DATA_LENGTH | MAX_DATA_LENGTH | INDEX_LENGTH | DATA_FREE | AUTO_INCREMENT | CREATE_TIME | UPDATE_TIME | CHECK_TIME | TABLE_COLLATION | CHECKSUM | CREATE_OPTIONS | TABLE_COMMENT | +---------------+--------------+-------------+------------+--------+---------+------------+------------+----------------+-------------+-----------------+--------------+-----------+----------------+-------------+-------------+------------+-----------------+----------+----------------+---------------+ | NULL | mysql | general_log | BASE TABLE | CSV | 10 | Dynamic | 2 | 0 | 0 | 0 | 0 | 0 | NULL | NULL | NULL | NULL | utf8_general_ci | NULL | | General log | +---------------+--------------+-------------+------------+--------+---------+------------+------------+----------------+-------------+-----------------+--------------+-----------+----------------+-------------+-------------+------------+-----------------+----------+----------------+---------------+ 1 row in set (0.00 sec)
我想删除那一行。
那会安全吗?
其他表中是否有更多的信息?
这不是你称之为的僵尸表。
当安装mysql时,包含mysql.general_log表。
它使用CSV存储引擎 。
代表它的两个文件是
/var/lib/mysql/mysql/general_log.frm /var/lib/mysql/mysql/general_log.CSV 您可以select在该表中启用常规日志logging。 就个人而言,我绝不会把它用作CSV表格。 我会将其转换为MyISAM并将其编入索引。 然后激活它,以便我可以按date时间查询表并在时间范围内查找SQL命令和用户。
我在DBA StackExchange中有很多文章,关于如何设置和使用它。 这里有几个:
Dec 27, 2011 : 如何做MySQL用户帐户 Jan 08, 2012 : 如何启用MySQL通用日志? Feb 11, 2012 : MySQL通用日志 重点:这不是一张幻影桌子。 它是真实的。 只需在mysql客户端运行:
SHOW CREATE TTABLE mysql.general_log\G
或者在操作系统中
ls -l /var/lib/mysql/mysql/general_log.*
现在,mysqldump正在抱怨这个表,有可能你必须删除/var/lib/mysql/mysql/general_log.CSV文件,而只保留其他文件/var/lib/mysql/mysql/general_log.frm 。 有两个解决scheme:
echo -n > /var/lib/mysql/mysql/general_log.CSV chown mysql:mysql /var/lib/mysql/mysql/general_log.CSV
.frm文件 rm -f /var/lib/mysql/mysql/general_log.frm
CAVEAT:删除/var/lib/mysql/mysql/general_log.frm ,在执行此操作之前,您无法创build常规日志表:
CREATE TABLE `general_log` ( `event_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, `user_host` mediumtext NOT NULL, `thread_id` int(11) NOT NULL, `server_id` int(10) unsigned NOT NULL, `command_type` varchar(64) NOT NULL, `argument` mediumtext NOT NULL ) ENGINE=CSV DEFAULT CHARSET=utf8 COMMENT='General log';
如果你永远不打算使用通用日志作为表,那么删除它不应该是一个问题。