Разделитель изменений MySQL в окне консоли редактора данных PhpStorm

Как заставить редактор данных PhpStorm распознавать DELIMITER \\?

Сценарий: у меня открыта консоль, и я хочу создать функцию, в которой у меня есть ;, определенный в функции.

При выполнении функция create не работает в первой строке, где существует ;.

Запрос такой

DELIMITER //
create function blah (datablah varchar(200)) returns tinyint(1)
  BEGIN
   Return tinyintVar;
  END //
DELIMITER ;

Эта функция работает так, как задумано, так как она находится в производстве, и я хочу скопировать ее в базу данных разработчика. Вот почему я знаю, что ошибка связана с разделителем.

Но это не первый раз, когда я пытаюсь сделать это в открытой консоли с другой функцией. При выполнении этого встроенного SQL в консоли редактора данных он просто не обнаруживает и не подтверждает ключевое слово DELIMITER. Даже если я просто запустил с Ctrl + Enter в строке с DELIMITER \\, я получаю сообщение «нечего запускать».

Примечание: это сработает, если у меня есть .sql файл, и я просто выполняю его. Но текущий рабочий процесс состоит в том, чтобы выделить функцию из живой БД, открыть редактор для просмотра кода функции создания, а затем скопировать + вставить в открытое окно консоли, которое я в настоящее время открыто.

Итак, единственный способ распознать DELIMIER - выполнить .sql файл?

PhpStorm 2018.2.2

Ошибка

[2018-09-05 12:07:33] [42000][1064] You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(19), endPeriod DATETIME(19)) returns tinyint(1)
[2018-09-05 12:07:33] BEGIN
[2018-09-05 12:07:33] DECLARE live BOOLEA' at line 1

снимок экрана введите здесь описание изображения

На снимке экрана вы заметите, что группа выполнения не поместила зеленую рамку вокруг ключевых слов-разделителей. Вот почему я думаю, что он не распознает ключевое слово.


person mushcraft    schedule 05.09.2018    source источник
comment
Здесь все нормально. Прикрепите снимок экрана с информацией о том, как вы это делаете, + ошибка, которую вы получаете   -  person Dmitrii    schedule 05.09.2018
comment
Вы пробовали выбрать всю команду (от DELIMITER // до DELIMITER ;) и выполнить выбор? Здесь были бы очень полезны скриншоты (или лучше скринкаст).   -  person LazyOne    schedule 05.09.2018
comment
@LazyOne да, у меня есть, именно так я выполняю все свои команды, поскольку мое открытое окно консоли - это в основном блокнот с множеством операторов SQL, поэтому мне нужно объяснить, какую команду я хочу выполнить.   -  person mushcraft    schedule 05.09.2018
comment
Включены ли метаданные Introspect Using JDBC на вкладке «Параметры» в свойствах источника данных? Если да, выключите   -  person moscas    schedule 04.10.2018
comment
DELIMETER - это оператор командной строки, он намеренно выходит за рамки. Как вы думаете, почему этот код действительно работает?   -  person moscas    schedule 04.10.2018
comment
Метаданные @moscas JDBC отключены. Код работает так, как коллега может использовать myphpadmin для добавления его в базу данных разработчика. это код из используемой производственной базы данных. Поэтому я делаю f4 (переход в редактор), когда процесс выделен на вкладке базы данных, затем c + p в подключенную консоль разработчика в phpstorm. Значит, DELIMETER не предполагается использовать в консолях phpstorm db?   -  person mushcraft    schedule 04.10.2018
comment
Итак, настоящая проблема в том, что сгенерированный код неверен. Не могли бы вы поделиться с нами своим окном подключения? И информация попала после нажатия на Подробности.   -  person moscas    schedule 05.10.2018
comment
нет ничего плохого в сгенерированном коде, поскольку он будет работать, если я могу указать разделитель, если я запустил его в другом клиенте и попробовал sqlfiddle, который позволяет вам выбрать разделитель из раскрывающегося списка. Кажется, не поддерживается в datagrip. youtrack.jetbrains.com/issue/DBE-2968   -  person mushcraft    schedule 08.10.2018


Ответы (1)


Поскольку есть запрос на реализацию функции, я скажу, что она не поддерживается.

DBE-2968: Возможность настройки разделителя / терминатора операторов SQL

person mushcraft    schedule 08.10.2018