Блог Александра Башкирова

ИТ и бизнес, компьютеры и ПО, фото, программирование и просто мысли…
Этот сайт в основном посвящен тому, что мне интересно вне работы. Ведется в порядке хобби.
Все изложенное на сайте - мое частное оценочное мнение и не может быть истолковано иначе.
Со всеми вытекающими из этого последствиями.

mysql: Как бороться с #2014 - Commands out of sync; you can't run this command now

Просмотров: 2739Комментарии: 2
Alib.spb.ru

Писал тут хранимую процедуру под mysql (что важно: с параметром типа string). Написал, запустил (из-под phpmyadmin)... получаю ошибку: #2014 - Commands out of sync; you can't run this command now. Я понимаю, когда ловлю такое из-под phpmyadmin - это еще куда ни шло... А вот когда запускаю из консоли, под рутом - получил ошибку "ERROR 1253 (42000): COLLATION 'utf8_bin' is not valid for CHARACTER SET 'latin1'". Ага, подумал я. И поменля кодировку всей базы на utf8. Не поверите: заработало! И из консоли, и из под pma.

Подозреваю, что для процедур, у которых на входе нетекстовый параметр - такой проблемы может не существовать. Но для текстового параметра - вот так вот.

Для памяти:

Изменяем кодировку для базы данных:

ALTER DATABASE `имя базы` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

Изменяем кодировку для таблицы:

ALTER TABLE `tablename` CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;

ALTER TABLE `tablename` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

Все естественно из-под рута.

Комментариев: 2 RSS

1 Стёпа 19-02-2019 10:06

Так где решение проблемы? С чем она связана? При чем тут кодировка?

2 Alexander Bashkirov 19-02-2019 13:23

Кодировка очень даже при чём.

Параметр хранимки в кодировке отличной от кодировки базы вызывает ошибку. Что непонятного-то?

Оставьте комментарий!


Комментарий будет опубликован после проверки

     

  

(обязательно)