This is the documentation for concrete5 version 5.6 and earlier. View Current Documentation

Concrete5 uses case sensitive naming conventions for its database table names. For example, you might find table names as AttributeKeys, Collections, CollectionsVersions, etc. from your concrete5 database by default.

However, if you are running on top of Windows with default registry settings and installed MySQL database server with default settings, you do not see names as such in your database. They will be all in lowercase. This also applies to some variants of Unix-based systems that use case insensitive file system.

You can fix this BEFORE installing concrete5 by adding this line to your MySQL configuration file:

lower_case_table_names=0

In Windows, you can find your MySQL configuration in a file called my.ini from your MySQL installation dir. For example, your MySQL installation can be found from C:\Program Files\MySQL\ but not guaranteed that it will be in that location.

This setting will bypass the default behavior and store your table names in case sensitive mode. If you have already installed concrete5 after doing the settings change, this setting will not affect the old table names that you have generated although your installation will still work (if you want to know why, read the background).

If you have moved your site and it's not working because of the case sensitivity issue, you probably get a blank page with one ADODB exception visible on top of the page stating either: [1146: Table 'c5_database.Config' doesn't exist] OR [1146: Table 'c5_database.Packages' doesn't exist]

There's no reason to panic if you have used case insensitive mode in your database and are about to move your concrete5 site to a case sensitive environment. Here's a free add-on that provides you a migration from case insensitive database to a case sensitive database in concrete5: http://www.concrete5.org/marketplace/addons/database-case-sensitivity-migration/

More information on its usage can be found from the add-on documentation.

Background on the Problem (for people interested in the topic)

The reason for this is that Windows uses case insensitive filesystem by default. That can be overridden with a registry setting but most Windows machines are running in case insensitive mode. This also means that MySQL will store the table names according to the filesystem settings and you will end up with lower case table names.

Fortunately, there is a setting option in MySQL with which you can override the default case insensitive behavior and force MySQL to store the table names in case sensitive mode. Still, this will NOT affect the case sensitive behavior of MySQL as long as your filesystem is running in case insensitive mode. This means that after changing the MySQL setting, your database queries like "SELECT * FROM collections" will still work 100% although the actual table name would appear as "Collections" in your database.

More developer/geeky information about the case insensitivity in MySQL can be found from the MySQL developer pages.

Loading Conversation