这涉及在Windows Server 2016上运行的MySQL 5.7。
我在MySql中使用TRUNCATE语句来减小大型日志文件(名为“mySite.log”)的大小,该文件位于:
ProgramData/MySQL/MySQL Server 5.7/Data/
我研究并实施了以下内容:
mysql> SET GLOBAL general_log=OFF;
这很成功。
但是,我试图确定我在上述目录中看到的大型日志文件实际上是通用查询日志文件。它将数据库的名称作为文件名的前缀(“MySite.log”),就像同一目录中的其他文件(.bin和.err,.pid)一样。这个大型日志文件实际上是general_log文件吗? (如果使用MySQL Workbench,将在何处设置日志文件和存储位置的命名?我似乎无法找到它。)以下语法是否会截断日志文件?
mysql> TRUNCATE TABLE mysql.general_log;
感谢任何线索。
一些有趣的手册条目可以阅读:
您可以检查服务器的配置方式
SHOW GLOBAL VARIABLES LIKE '%log%';
然后查找log-output
的值。这表明您是否登录FILE
,TABLE
或两者。
当它是FILE
时,检查general_log_file
的值。这是日志文件在文件系统中的位置。您可以简单地删除它,并创建一个新文件(如果您想再次启用general_log)。然后执行FLUSH LOGS;
。
当它是TABLE
然后你的TRUNCATE TABLE mysql.general_log;
声明是正确的。
关于你的第二个问题,永远不要搞乱mysql架构中的表。只是不要(如果你不知道你在做什么)。我甚至不知道你是怎么想到这个想法的。