Мне удалось воспроизвести эту ошибку с MySQL и phpmyadmin:
#2014 - Commands out of sync; you can't run this command now
На этой версии MySQL:
el@apollo:~$ mysql --version
mysql Ver 14.14 Distrib 5.5.34, for debian-linux-gnu (x86_64) using readline 6.2
С помощью следующего SQL, запускаемого через окно запроса phpmyadmin:
use my_database;
DELIMITER $$
CREATE PROCEDURE foo()
BEGIN
select 'derp' as 'msg';
END $$
CALL foo()$$ <----Error happens here, with or without delimiters.
Я не мог получить ошибку через терминал mysql, поэтому я думаю, что это ошибка в phpmyadmin.
Отлично работает на терминале:
mysql> delimiter $$
mysql> use my_database$$ create procedure foo() begin select 'derp' as 'msg'; end $$ call foo() $$
Database changed
Query OK, 0 rows affected (0.00 sec)
+------+
| msg |
+------+
| derp |
+------+
1 row in set (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Я думаю, что ошибка связана с изменением промежуточного запроса разделителей в phpmyadmin.
Обходной путь: Замедлите своего ковбоя и запускайте операторы SQL по одному при использовании phpmyadmin. phpmyadmin - это «одиночный боб», он может выполнять только одну работу.