Skip to main content

Setting MySQL to Use UTF-8 on MAMP (MySQL 5.5.9, or 5+)


I wanted to setup MySQL to use utf-8 on the MAMP installation on my Mac.

I tried the instructions from this article: http://cameronyule.com/2008/07/configuring-mysql-to-use-utf-8/

However, I kept getting error messages that are similar to this one

[ERROR] /Applications/MAMP/Library/bin/mysqld: unknown variable 'default-collation=utf8_general_ci'

I did some search and realized that several variables are deprecated.

Reference: http://dev.mysql.com/doc/refman/5.1/en/server-options.html

Therefore, I added the following lines into /Applications/MAMP/conf/my.cnf

[mysql]
character-set-server=utf8

[client]
character-set-server=utf8

[mysqld]

character-set-server=utf8
collation-server=utf8_general_ci
init-connect='SET NAMES utf8'

I restarted the server and mysql run successfully with relevant variables being set correctly.

In the "Variables" tab under phpMyAdmin interface (ex. http://localhost:8888/MAMP/?language=English)

character set client utf8
character set connection utf8
character set database  utf8
character set filesystem binary
character set results utf8
character set server utf8
character set system utf8

collation connection utf8_general_ci
collation database utf8_general_ci
collation server utf8_general_ci




Character set related variables set to utf-8.

Comments

Anonymous said…
Struggled for dyas with this. Then made a new my.cnf file in /Applications/MAMP/conf folder.

IT contains just these lines

# The MySQL server
[mysqld]
skip-character-set-client-handshake
collation_server=utf8_unicode_ci
character_set_server=utf8

Hope this helps someone else
Anonymous said…
Thanks, this helped me! I had changed my my.cnf in MAMP as recommended by Symfony 2.

Popular posts from this blog

ngrok, a service to help you get a public URL for your local webserver

If you are looking for options to test your web app hosted on your own machine (e.g., laptop) remotely with someone, I recommend using a service called ngrok. https://ngrok.com/ It has many usages, but in the context of testing an app hosted on your own machine, the most important part is giving you a public URL that will redirect all the requests to your local webserver (e.g., Apache, Nginx, or whatever server you are running). You can give this URL to a testing participant without the need to host the app on a remote server. For instance, if you are testing your app using a sever on your machine, typically you can access your app in a URL like:  http://localhost:3000/?study=11 Using ngrok, you will have a dynamically generated URL like the following: https://3ebe3c019867.ngrok.io/ The service will redirect requests to https://3ebe3c019867.ngrok.io to http://localhost:3000 You can then share the following link with your testing participant for the participant to use your app. http...

How to update multiple fields in an SQL update statement

Syntax: /* the correct way of putting multiple fields together, using comma */ UPDATE `stories` SET `content`='Once upon a time ...', `update_time`=now() WHERE id=1; Note: there is no 'and' between the fields you are trying to update. You should use comma between each pair of the fields you are trying to update. Otherwise, you will likely get an '0' as the result value in the 'content' field without getting any error message. If you do the following, you will likely get an '0' in the 'content' field, without any error message /* the wrong way of putting multiple fields together, using 'and' */ UPDATE `stories` SET `content`='My Story' and `update_time`=now() WHERE id=1; See also:  http://stackoverflow.com/a/7375371