Bug #29045 Some inconsistency in using system variables
Submitted: 12 Jun 2007 7:38 Modified: 24 Jan 2011 8:51
Reporter: Victoria Reznichenko Email Updates:
Status: Can't repeat Impact on me:
None 
Category:MySQL Server: DML Severity:S3 (Non-critical)
Version:5.1 OS:Any
Assigned to: Alexey Kopytov CPU Architecture:Any

[12 Jun 2007 7:38] Victoria Reznichenko
Description:
mysql> select @@global.innodb_data_file_path;
ERROR 1233 (HY000): Variable 'innodb_data_file_path' can only be set, not read

mysql> set @@global.innodb_data_file_path='';
ERROR 1238 (HY000): Variable 'innodb_data_file_path' is a read only variable

I don't understand why it is impossible to read innodb_data_file_path value and error messages contradict each other.

How to repeat:
Run:
select @@global.innodb_data_file_path;
set @@global.innodb_data_file_path='';

Suggested fix:
- make innodb_data_file_path readable.
- fix error messages
[16 Nov 2007 6:33] terry tao
mysql> show variables like 'version';
+---------------+-----------------------+
| Variable_name | Value                 |
+---------------+-----------------------+
| version       | 5.1.23-beta-debug-log |
+---------------+-----------------------+
1 row in set (0.02 sec)

mysql> select @@global.innodb_data_file_path;
+--------------------------------+
| @@global.innodb_data_file_path |
+--------------------------------+
| ibdata1:10M:autoextend         |
+--------------------------------+
1 row in set (0.00 sec)

mysql> set @@global.innodb_data_file_path='';
ERROR 1238 (HY000): Variable 'innodb_data_file_path' is a read only variable
mysql>
[24 Jan 2011 8:51] Guilhem Bichot
The comment from Terry showed that this has not been repeatable since Nov 2007. And I just good correct results:

Server version: 5.1.56-valgrind-max-debug-log Source distribution

mysql> select @@global.innodb_data_file_path;
+--------------------------------+
| @@global.innodb_data_file_path |
+--------------------------------+
| ibdata1:10M:autoextend         |
+--------------------------------+
1 row in set (0.00 sec)

mysql> set @@global.innodb_data_file_path='';
ERROR 1238 (HY000): Variable 'innodb_data_file_path' is a read only variable

So it's readable, and not settable (normal, you can't change the path for InnoDB's file when InnoDB is started; need to first shut down mysqld, use the command-line option innodb_data_file_path, and then restart mysqld).