我正在尝试在命令行启动mysql时设置一些innodb设置:
mysql -p*password* --skip-innodb_doublewrite
mysql -p*password* --innodb_flush_log_at_trx_commit=2
似乎可以实现
命令行格式
关闭此变量--innodb-doublewrite
...可以使用--skip-innodb_doublewrite
命令行格式
--innodb_flush_log_at_trx_commit[=#]
但是,执行时我得到:
mysql: unknown option '--skip-innodb_doublewrite'
mysql: unknown variable 'innodb_flush_log_at_trx_commit=0'
发生了什么事?我完全没有解释过这些文档吗?
我正在使用MySQL 5.5.45
答案 0 :(得分:1)
这些是服务器选项,而不是客户端选项,因此需要在SET GLOBAL
命令行中指定它们。但是,正如文档所说:
许多系统变量可以在运行时更改(参见Section 6.1.6.2, “Dynamic System Variables”)。
如果你去那个页面,第一行说:
许多服务器系统变量是动态的,可以使用
SET SESSION
或innodb_doublewrite
在运行时设置。
有一张表列出了所有动态变量。 innodb_flush_log_at_trx_commit
不是其中之一,因此只能在服务器启动时指定(使用命令行参数或在配置文件中)。但mysql -u root -p"password" -e "set global innodb_flush_log_at_trx_commit = 0"
被列为全局变量,因此您可以这样做:
f = open('/etc/issue','r')
out = f.readline()
out = out.replace('\\n', '').replace('\\l', '').strip()
f.close()
print out
答案 1 :(得分:0)
如果有人收到消息unknown variable 'innodb_flush_log_at_trx_commit=0'
试图在my.ini或mysql.cnf文件中设置此配置,则必须在innodb_flush_log_at_trx_commit=0
部分的下方写上行[mysqld]
。>