命令行上的MySQL未知InnoDB选项

时间:2017-02-01 16:36:44

标签: mysql

我正在尝试在命令行启动mysql时设置一些innodb设置:

mysql -p*password* --skip-innodb_doublewrite

mysql -p*password* --innodb_flush_log_at_trx_commit=2

MySQL docs

似乎可以实现
  

命令行格式--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

2 个答案:

答案 0 :(得分:1)

这些是服务器选项,而不是客户端选项,因此需要在SET GLOBAL命令行中指定它们。但是,正如文档所说:

  

许多系统变量可以在运行时更改(参见Section 6.1.6.2, “Dynamic System Variables”)。

如果你去那个页面,第一行说:

  

许多服务器系统变量是动态的,可以使用SET SESSIONinnodb_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]