Data too long for column
Твърде рано се зарадвах на новия MySQL. Веднага след инсталацията импортирах базите от данни от стария сървър, тествах няколко от приложенията си за които знам, че са с по-сложнички заявки, тествах дали данните на кирилица са се импортирали добре и останах доволен. Какво обаче се случи с един от проектите върху които работя…
След опит да се вмъкне текст в поле на кирилица, ако е над определени символи (доста под зададените при дефиницията на полето), MySQL ми връща грешка:
Data too long for column 'subject' at row 1
Мдаа… кофти работа. Набързо правя преглед на наборите от знаци:
SHOW VARIABLES LIKE 'char%';
Всичко ОК, и в phpMyAdmin, и от уеб приложението:
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
Преглеждам набързо наборите от знаци на базата от данни, на таблиците, на полетата - всичко ОК (utf8_general_ci).
Точно заради подобни мизерийки винаги си пускам по една заявка
SET NAMES 'utf8'
Реших, че явно проблема не е толкова тривиален потърсих в google:
http://bugs.mysql.com/bug.php?id=13139
http://bugs.mysql.com/bug.php?id=16209
http://bugs.mysql.com/bug.php?id=17872
http://bugs.mysql.com/bug.php?id=18908
Мда… още по-кофти е от колкото предполагах. Явно не съм сам. За съжаление твърде късно ми хрумна идеята да вкарам запис от phpMyAdmin-а. Стана. Явно проблема беше в моя телевизор.
Та започнах да си гледам телевизора, като беше ясно, че проблема е или в Модела или в Контролера (MVC Архитектура). Погледнах в Модела заявката, която се генерира - текста счупен. Погледнах в Контролера - там текста ок. Значи предава Контролера данните на Модела и той ги скапва.
След кратък анализ се оказа, че проблема е във htmlentities и по-специално факта, че не съм предал като трети параметър ‘UTF-8′. Интересното тук е, че никога не ми се е налагало да правя това, но сега това се оказа “препъни камъка” в цялата тази овертюра при търсенето на виновника.
Въпросът ще трябва да се проучи допълнително!
on September 29th, 2006 at 2:55 pm
каква библиотека ползваш за MVC
on September 29th, 2006 at 3:21 pm
В случая не ползвах външна библиотека или фреймуърк а си я реализрах сам, тъй като по стечение на обстоятелствата трябваше да започна разработката, без да ползвам никакъв външен код. Реализацията беше съвсем простичка.
Иначе интересна реализация на MVC има Mojavi фреймуърка. Преди 2-3 години го преглеждах, сигурно в са го поразвили от тогава.