MySQL:变量'general_log_file'不能设置为'〜/ path / to / new / file'的值

时间:2015-07-22 22:03:22

标签: mysql sql

我希望MySQL创建一个新的通用日志文件并将所有内容记录到它。

当我在MySQL中键入它时:

set global general_log_file='~/path/to/new/file';

并且文件是我希望MySQL在我设置全局变量后处理某些事务时创建的文件(即它还不存在),它给了我一个错误:

Variable 'general_log_file' can't be set to the value of '~/path/to/new/file'

但是,如果我使用的文件路径如下:

set global general_log_file='new/file';

它没有抱怨并相应地分配变量,即使这个新文件还不存在。

这里发生了什么?

2 个答案:

答案 0 :(得分:0)

更改我的cnf.ini

general_log_file        = /var/log/mysql/new_file.log
general_log             = 1

然后重启mysql进程

  

服务器重新启动和日志刷新不会导致新的常规查询日志   要生成的文件(虽然刷新关闭并重新打开)

shell> mysqladmin flush-logs

答案 1 :(得分:0)

SET GLOBAL general_log = 'ON';
SET GLOBAL general_log_file='/var/log/general_log/general.log'; 

If error occurs MySQL: Variable 'general_log_file' can't be set to the value of '/var/log/general_log/general.log'

Just simple change file owner to mysql
Example chown -p mysql:mysql /var/log/general_log

Then change file permission
Format: chown 777 <log_output_file_name>
Ex: chmod 777 general.log

After that execute, 
SET GLOBAL general_log_file='/var/log/general_log/general.log'; 


Verify the result: show global variables like '%general_log_file%';


Output:
MariaDB [(none)]> show global variables like '%general_log_file%';

+------------------+----------------------------------+
| Variable_name    | Value                            |
+------------------+----------------------------------+
| general_log_file | /var/log/general_log/general.log |
+------------------+----------------------------------+
1 row in set (0.00 sec)