Custom MySQL configuration on Travis
We ran into some character encoding issues with our automated tests on Travis recently. Luckily, it’s very easy to change the MySQL configuration in your test environment.
If you look at the default my.cnf
configuration file in the sudo-enabled environment, you will see that it ends with a !includedir
directive:
!includedir /etc/mysql/conf.d/
This directive will look for any .cnf
file in /etc/mysql/conf.d/
and load it. It allows you to add new configuration values or overwrite existing ones. This keeps things nicely organised and easy to manage.
To make use of this option, you need to make sure that you are running Travis builds in a sudo-enabled environment. In your .travis.yml
file:
sudo: required
Then, create the custom configuration file. I put it in _travis/mysql.cnf
:
[mysqld]
collation-server=utf8_unicode_ci
character-set-server=utf8
Finally, move the config file to the right location and restart MySQL to pick up the changes before you run your tests. In .travis.yml
:
before_install:
- sudo cp $TRAVIS_BUILD_DIR/_travis/mysql.cnf /etc/mysql/conf.d/
- sudo service mysql restart
That’s it: your Travis builds now runs with your custom MySQL configuration!