MySQL Duplicate entry for a greek word I have a column which is unique and when I add Αγάθη and Αγαθή (which are different) it says #1062 - Duplicate entry 'Î‘Î³Î±Î¸Î®' for key 'word'. My collation is set to utf8_general_ci. Is there any better collation?
Of the several utf8 collations available:

mysql&gt; SELECT * FROM information_schema.collations WHERE character_set_name = 'utf8';
+--------------------------+--------------------+-----+------------+-------------+---------+
| COLLATION_NAME           | CHARACTER_SET_NAME | ID  | IS_DEFAULT | IS_COMPILED | SORTLEN |
+--------------------------+--------------------+-----+------------+-------------+---------+
| utf8_general_ci          | utf8               |  33 | Yes        | Yes         |       1 |
| utf8_bin                 | utf8               |  83 |            | Yes         |       1 |
| utf8_unicode_ci          | utf8               | 192 |            | Yes         |       8 |
| utf8_icelandic_ci        | utf8               | 193 |            | Yes         |       8 |
| utf8_latvian_ci          | utf8               | 194 |            | Yes         |       8 |
| utf8_romanian_ci         | utf8               | 195 |            | Yes         |       8 |
| utf8_slovenian_ci        | utf8               | 196 |            | Yes         |       8 |
| utf8_polish_ci           | utf8               | 197 |            | Yes         |       8 |
| utf8_estonian_ci         | utf8               | 198 |            | Yes         |       8 |
| utf8_spanish_ci          | utf8               | 199 |            | Yes         |       8 |
| utf8_swedish_ci          | utf8               | 200 |            | Yes         |       8 |
| utf8_turkish_ci          | utf8               | 201 |            | Yes         |       8 |
| utf8_czech_ci            | utf8               | 202 |            | Yes         |       8 |
| utf8_danish_ci           | utf8               | 203 |            | Yes         |       8 |
| utf8_lithuanian_ci       | utf8               | 204 |            | Yes         |       8 |
| utf8_slovak_ci           | utf8               | 205 |            | Yes         |       8 |
| utf8_spanish2_ci         | utf8               | 206 |            | Yes         |       8 |
| utf8_roman_ci            | utf8               | 207 |            | Yes         |       8 |
| utf8_persian_ci          | utf8               | 208 |            | Yes         |       8 |
| utf8_esperanto_ci        | utf8               | 209 |            | Yes         |       8 |
| utf8_hungarian_ci        | utf8               | 210 |            | Yes         |       8 |
| utf8_sinhala_ci          | utf8               | 211 |            | Yes         |       8 |
| utf8_german2_ci          | utf8               | 212 |            | Yes         |       8 |
| utf8_croatian_ci         | utf8               | 213 |            | Yes         |       8 |
| utf8_unicode_520_ci      | utf8               | 214 |            | Yes         |       8 |
| utf8_vietnamese_ci       | utf8               | 215 |            | Yes         |       8 |
| utf8_general_mysql500_ci | utf8               | 223 |            | Yes         |       1 |
+--------------------------+--------------------+-----+------------+-------------+---------+
27 rows in set (0.00 sec)


These are reasonable ways to compare greek strings:

mysql&gt; SET NAMES utf8;
Query OK, 0 rows affected (0.00 sec)

mysql&gt; SELECT 'Αγάθη' = 'Αγαθή' COLLATE utf8_general_ci;
+-----------------------------------------------------+
| 'Αγάθη' = 'Αγαθή' COLLATE utf8_general_ci           |
+-----------------------------------------------------+
|                                                   1 |
+-----------------------------------------------------+
1 row in set (0.00 sec)

mysql&gt; SELECT 'Αγάθη' = 'Αγαθή' COLLATE utf8_unicode_ci;
+-----------------------------------------------------+
| 'Αγάθη' = 'Αγαθή' COLLATE utf8_unicode_ci           |
+-----------------------------------------------------+
|                                                   1 |
+-----------------------------------------------------+
1 row in set (0.00 sec)

mysql&gt; SELECT 'Αγάθη' = 'Αγαθή' COLLATE utf8_unicode_520_ci;
+---------------------------------------------------------+
| 'Αγάθη' = 'Αγαθή' COLLATE utf8_unicode_520_ci           |
+---------------------------------------------------------+
|                                                       1 |
+---------------------------------------------------------+
1 row in set (0.00 sec)

mysql&gt; SELECT 'Αγάθη' = 'Αγαθή' COLLATE utf8_bin;
+----------------------------------------------+
| 'Αγάθη' = 'Αγαθή' COLLATE utf8_bin           |
+----------------------------------------------+
|                                            0 |
+----------------------------------------------+
1 row in set (0.00 sec)

mysql&gt; SELECT BINARY 'Αγάθη' = 'Αγαθή';
+------------------------------------+
| BINARY 'Αγάθη' = 'Αγαθή'           |
+------------------------------------+
|                                  0 |
+------------------------------------+
1 row in set (0.01 sec)


As you can see, only the utf8bin collation considers them as different, and of course,  the BINARY comparison. 

There doesn't seem to be a specific greek collation in utf8 or utf8mb4, but there is also a 1-byte ISO 8859-7 implementation "greek", with a couple of extra collations:

mysql&gt; SELECT * FROM information_schema.collations WHERE character_set_name = 'greek';
+------------------+--------------------+----+------------+-------------+---------+
| COLLATION_NAME   | CHARACTER_SET_NAME | ID | IS_DEFAULT | IS_COMPILED | SORTLEN |
+------------------+--------------------+----+------------+-------------+---------+
| greek_general_ci | greek              | 25 | Yes        | Yes         |       1 |
| greek_bin        | greek              | 70 |            | Yes         |       1 |
+------------------+--------------------+----+------------+-------------+---------+
2 rows in set (0.00 sec)


I do not know Greek at all, so make sure you double check all your queries if you change a column's default encoding and collation, as it may have unexpected ordering/comparing/grouping results both for Greek and for other languages (e.g. utf8 does not allow storing emojis; utf8mb4_unicode_ci and utf8mb4_unicode_520_ci compares them differently), and what you may want would depend a lot on the context of the call.