Bug #49851 --skip-innodb without any effect
Submitted: 21 Dec 2009 16:42 Modified: 22 Dec 2009 2:02
Reporter: Roland Rosenfeld Email Updates:
Status: Duplicate Impact on me:
None 
Category:MySQL Server: Documentation Severity:S3 (Non-critical)
Version:5.1.41 OS:Solaris (5.10)
Assigned to: CPU Architecture:Any

[21 Dec 2009 16:42] Roland Rosenfeld
Description:
It seems, that in version 5.1.41 (from mysql-5.1.41-solaris10-sparc-64bit.tar.gz) skip-innodb does not have any effect, neither in my.cnf nor as --skip-innodb option to a manually started mysqld.

The workaround is innodb=OFF in my.cnf.

How to repeat:
Enter skip-innodb to your my.cnf and wonder why the innodb engine is still active.

Suggested fix:
Change the documentation, and tell the user to use innodb=OFF instead of skip-innodb.

Give a warning to the error log, that skip-innodb is no longer supported instead of just doing nothing...
[21 Dec 2009 16:51] Valeriy Kravchuk
Strange, but with current 5.1.43 from bzr built from sources --skip-innodb works as expected for me:

77-52-7-73:5.1 openxs$ bin/mysqld_safe --skip-innodb &
[1] 61830
77-52-7-73:5.1 openxs$ 091221 18:48:52 mysqld_safe Logging to '/Users/openxs/dbs/5.1/var/77-52-56-187.dialup.umc.net.ua.err'.
chown: /Users/openxs/dbs/5.1/var/77-52-56-187.dialup.umc.net.ua.err: Operation not permitted
091221 18:48:52 mysqld_safe Starting mysqld daemon with databases from /Users/openxs/dbs/5.1/var

77-52-7-73:5.1 openxs$ bin/mysql -uroot test
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.1.43-debug Source distribution

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show engines;
+------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine     | Support | Comment                                                        | Transactions | XA   | Savepoints |
+------------+---------+----------------------------------------------------------------+--------------+------+------------+
| ndbcluster | NO      | Clustered, fault-tolerant tables                               | NULL         | NULL | NULL       |
| MRG_MYISAM | YES     | Collection of identical MyISAM tables                          | NO           | NO   | NO         |
| BLACKHOLE  | YES     | /dev/null storage engine (anything you write to it disappears) | NO           | NO   | NO         |
| CSV        | YES     | CSV storage engine                                             | NO           | NO   | NO         |
| MEMORY     | YES     | Hash based, stored in memory, useful for temporary tables      | NO           | NO   | NO         |
| FEDERATED  | NO      | Federated MySQL storage engine                                 | NULL         | NULL | NULL       |
| ARCHIVE    | YES     | Archive storage engine                                         | NO           | NO   | NO         |
| InnoDB     | NO      | Supports transactions, row-level locking, and foreign keys     | NULL         | NULL | NULL       |
| MyISAM     | DEFAULT | Default engine as of MySQL 3.23 with great performance         | NO           | NO   | NO         |
+------------+---------+----------------------------------------------------------------+--------------+------+------------+
9 rows in set (0.00 sec)

mysql> show engine innodb status\G
ERROR 1286 (42000): Unknown table engine 'innodb'

See http://dev.mysql.com/doc/refman/5.1/en/innodb-parameters.html#option_mysqld_innodb also.

How you checked that it does not work?
[21 Dec 2009 18:46] Roland Rosenfeld
I checked it exactly like you:

$ bin/mysqld_safe --skip-innodb &
[1] 1894
091221 19:35:49 mysqld_safe Logging to '/home/mysql/data/core.err'.
091221 19:35:49 mysqld_safe Starting mysqld daemon with databases from /home/mysql/data

$ bin/mysql -uroot -p
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.1.41 MySQL Community Server (GPL)

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show engines;
+------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine     | Support | Comment                                                        | Transactions | XA   | Savepoints |
+------------+---------+----------------------------------------------------------------+--------------+------+------------+
| InnoDB     | YES     | Supports transactions, row-level locking, and foreign keys     | YES          | YES  | YES        |
| MRG_MYISAM | YES     | Collection of identical MyISAM tables                          | NO           | NO   | NO         |
| BLACKHOLE  | YES     | /dev/null storage engine (anything you write to it disappears) | NO           | NO   | NO         |
| CSV        | YES     | CSV storage engine                                             | NO           | NO   | NO         |
| MEMORY     | YES     | Hash based, stored in memory, useful for temporary tables      | NO           | NO   | NO         |
| FEDERATED  | NO      | Federated MySQL storage engine                                 | NULL         | NULL | NULL       |
| ARCHIVE    | YES     | Archive storage engine                                         | NO           | NO   | NO         |
| MyISAM     | DEFAULT | Default engine as of MySQL 3.23 with great performance         | NO           | NO   | NO         |
+------------+---------+----------------------------------------------------------------+--------------+------+------------+
8 rows in set (0.00 sec)

As you can see, InnoDB is enabled and the above --skip-innodb is ignored.
As you can see from the log file name my current /etc/my.cnf is used but if you look for innodb in this file, you only see inactive lines at the moment:

$ grep -i innodb /etc/my.cnf
# Uncomment the following if you are using InnoDB tables
#innodb_data_home_dir = /usr/local/mysql/data/
#innodb_data_file_path = ibdata1:2000M;ibdata2:10M:autoextend
#innodb_log_group_home_dir = /usr/local/mysql/data/
#innodb_log_arch_dir = /usr/local/mysql/data/
#innodb_buffer_pool_size = 384M
#innodb_additional_mem_pool_size = 20M
#innodb_log_file_size = 100M
#innodb_log_buffer_size = 8M
#innodb_flush_log_at_trx_commit = 1
#innodb_lock_wait_timeout = 50
#skip-innodb
#innodb=OFF

As mentioned in my bug report innodb=OFF really switches off innodb while skip-innodb does not have any effekt in this installation.
No idea why my installation is broken, but as I wrote before it's the standard package from dev.mysql.com: mysql-5.1.41-solaris10-sparc-64bit.tar.gz.
I just tried out the 32bit version (mysql-5.1.41-solaris10-sparc.tar.gz) and it also ignores --skip-innodb.
[22 Dec 2009 2:02] Davi Arnaut
Closed as a duplicate of Bug#46043.