Bug #70008 use tx_isolation for startup/my.cnf parameter settings for consistency
Submitted: 13 Aug 2013 5:35 Modified: 3 Dec 2013 8:46
Reporter: Simon Mudd (OCA) Email Updates:
Status: Verified Impact on me:
None 
Category:MySQL Server: Options Severity:S3 (Non-critical)
Version:all (up to 5.7.1) OS:Any (n/a)
Assigned to: CPU Architecture:Any

[13 Aug 2013 5:35] Simon Mudd
Description:
The documentation tells you but that's not really enough: it breaks stuff the fact that the /etc/my.cnf variable and the SHOW GLOBAL VARIABLES variable names are completely different.

A colleague said this morning:

"hi, one of our development servers failed to start and giving this error "[ERROR] /usr/sbin/mysqld: unknown variable 'tx_isolation=READ-COMMITTED'". I commented this setting in my.cnf to make it start, but am not sure if that's ok."

See: http://dev.mysql.com/doc/refman/5.6/en/server-system-variables.html#sysvar_tx_isolation

This was a misconfiguration because the SHOW GLOBAL VARIABLES NAME is tx_isolation, but the /etc/my.cnf variable name is  transaction-isolation. There is no need to have 2 different names.

How to repeat:
Try to startup mysql using --tx-isolation=READ-COMMITTED and notice how it does not recognise the variable name. You need to use --transaction-isolation=READ-COMMITTED, or the equivalent setting in /etc/my.cnf

Suggested fix:
Use one of the names consistently. I would suggest that you use tx_isolation.

If you want to make things backwards compatible (for a major version) then add a /etc/my.cnf settting tx_isolation variable and if the transaction-isolation variable is used issue a warning that it should be changed to tx_isolation.

Please just be consistent. It makes things easier for everyone.
[13 Aug 2013 10:03] MySQL Verification Team
Hello Simon,

Thank you for the report.
I agree with you on sticking to a common "name" for this purpose to avoid any confusion between Command-Line vs System Variable/Option-File naming.

Thanks,
Umesh
[3 Dec 2013 8:46] Simon Mudd
Bitten by this again.
5.7 is not GA yet so would be good to fix this and make life easier for everyone.
[3 Dec 2013 10:21] Mark Leith
Note that the tx_read_only variable is also like this, where you use --transaction-read-only option.

http://dev.mysql.com/doc/refman/5.6/en/server-system-variables.html#sysvar_tx_read_only

We have a number of other variables that are both configured, and exposed, using a transaction_* prefix already:

transaction_alloc_block_size
transaction_allow_batching
transaction_prealloc_size

Seems like we should just expose them using the transaction_* prefix as well.
[17 Mar 2017 5:35] MySQL Verification Team
Bug #85494 marked as duplicate of this
[23 May 2018 6:25] MySQL Verification Team
mysql> show global variables like '%isolation%';
+-----------------------+----------------+
| Variable_name         | Value          |
+-----------------------+----------------+
| transaction_isolation | READ-COMMITTED |
+-----------------------+----------------+
1 row in set (0.01 sec)

mysql> select version();
+-------------------+
| version()         |
+-------------------+
| 8.0.11-commercial |
+-------------------+
1 row in set (0.00 sec)
[23 May 2018 6:26] MySQL Verification Team
https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_tx_isolation
https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_transaction_is...