Where to put my.ini file for 5.6.21 MySQL Community Server on Windows I have copied the C:\Program Files\MySQL\MySQL Server 5.6\my-default.ini to C:\Program Files\MySQL\MySQL Server 5.6\my.ini and changed some settings including setting table_definition_cache=400.  When I log into the database and look at the table_definition_cache value I get the following:

mysql&gt; SHOW GLOBAL VARIABLES LIKE '%table_definition_cache%';
+------------------------+-------+
| Variable_name          | Value |
+------------------------+-------+
| table_definition_cache | 1400  |
+------------------------+-------+
1 row in set (0.05 sec)


Where do I need to put my my.ini file such that the database loads it on startup?
The folder C:\Program Files\MySQL\MySQL Server 5.6 is the correct location for my.ini.
There are two possible reasons 1400 shows up as table_definition_cache.
REASON #1
You did not restart mysql.
Login to Windows DOS command line as Administrator and run
C:\&gt; net stop mysql
C:\&gt; net start mysql

Value should be in place afterwards.
REASON #2
The default value for table_definition_cache is -1 (autosized). That makes mysqld figure out a fair value for table_definition_cache, given your OS configuration.
CAVEAT
Make sure you place
table_definition_cache = 400

under the [mysqld] group header before you restart mysql
GIVE IT A TRY !!!
I dug a little further and learned why 1400 comes up for table_definition_cache
According to the Documentation for table_definition_cache

The default value is based on the following formula, capped to a limit of 2000:
400 + (table_open_cache / 2)


The default value for table_open_cache is 2000
Applying the formula
400 + (table_open_cache / 2) =
400 + (2000 / 2) =
400 + 1000 =
1400

One of two things is happening

table_definition_cache is still not being picked up from my.ini
table_definition_cache is being picked up from my.ini, but is being rejected due to needed resources