ayrıca bu karakterleri mysqle yazmaya çalışırken hata vermek yerine, 4 byte veriyi 3 + 3 yani 6 byte alan kaplayacak şekilde yazar.
İfade hatası olmuş, hata değil uyarı demek daha doğru bir ifade olacak. Verilen uyarı da aşağıdaki gibidir.
+---------+------+--------------------------------------------------------------------------------------+
| Level | Code | Message |
+---------+------+--------------------------------------------------------------------------------------+
| Warning | 1366 | Incorrect string value: '\xF0\xA5\xB9\x96\xF0\xA5...' for column 'utf8_col' at row 1 |
+---------+------+--------------------------------------------------------------------------------------+
4 byte'lık karakterin 3+3 olarak saklanması konusuna gelince, bunu tekrar test ettim ve dev.mysql.com üzerinde 5.0'dan 5.7'ye kadar tek tek kontrol ettim, 5.4 ve 5.5 versiyonlarında test ettim. Dediğiniz gibi 3+3 şeklinde bir saklama söz konusu değil. UTF8 kolona 4 bytelık utf8 karakteri yazılmak istendiğinde haberleşme utf8 ise kolona hiçbir içerik kayıt etmez, uyarı verir, utf8mb4 ise ilgili karakterler '?' ile değiştirilir ve o şekilde kayıt edilir. En altta dev.mysql.com bağlantısından da bu veriye ulaşabilirsiniz.
CREATE TABLE `test` (
`utf8_col` varchar(45) CHARACTER SET utf8,
`utf8mb4_col` varchar(45) CHARACTER SET utf8mb4
);
set names utf8;
insert into test (utf8_col,utf8mb4_col) values ('𥹖𥹖𥹖𥹖','𥹖𥹖𥹖𥹖');
set names utf8mb4;
insert into test (utf8_col,utf8mb4_col) values ('𥹖𥹖𥹖𥹖','𥹖𥹖𥹖𥹖');Sonuçlar;
select length(utf8_col),length(utf8mb4_col) from test;
+------------------+---------------------+
| length(utf8_col) | length(utf8mb4_col) |
+------------------+---------------------+
| 0 | 16 |
| 4 | 16 |
+------------------+---------------------+
2 rows in set (0.21 sec)
select char_length(utf8_col),char_length(utf8mb4_col) from test;
+-----------------------+--------------------------+
| char_length(utf8_col) | char_length(utf8mb4_col) |
+-----------------------+--------------------------+
| 0 | 16 |
| 4 | 4 |
+-----------------------+--------------------------+
https://dev.mysql.com/doc/refman/5.7...t-unicode.html