Почему запрос MySql, действительный в Workbench, возвращает синтаксические ошибки в phpmyadmin? - PullRequest
1 голос
/ 27 мая 2020

, поэтому у меня есть 2 таблицы как table1 и table2 в 2 разных базах данных как id_information и id_information_backup. Обе таблицы имеют следующие столбцы: (id bigint, name varchar, surname varchar) Я сделал этот триггер, где, когда пользователь вводит имя и фамилию в table1, он вычисляет его код ascii, выполняет некоторые вычисления и сохраняет его в папке " name "столбец второй таблицы" table2 ". Все это было сделано в верстаке Mysql. когда я импортирую код в phpmyadmin, это дает мне слишком много синтаксических ошибок. Я попытался выяснить, какие у меня есть синтаксические ошибки, но не нашел. Я делюсь триггером ниже. Пожалуйста, помогите мне, если сможете. Я буду очень признателен. Думаю, это из-за того, что я использовал версию MySQL workbench 8.0, а версию, в которую я импортирую это, - PHPmyadmin 4.9.4. Если можете, устраните проблему.

delimiter $$ 
CREATE DEFINER = CURRENT_USER TRIGGER `id_information`.`table1_after_INSERT1` AFTER INSERT ON `table1` FOR EACH ROW
BEGIN
declare p , r , copy, result, result1 decimal(64,0);
declare name1, surnam varchar(15);
declare a int;
set name1 = new.name;
set surnam = new.surname;
set a= 100;
set result =0;
set copy = 0;
set result1 =0;
set p =0 ;
set r =0 ;
with recursive cte as (
    select name1 as name1, left(name1, 1) as val, 1 as idx
    union all
    select name1, substring(name1, idx + 1, 1), idx + 1 
    from cte 
    where idx < char_length(name1)
)
select group_concat(ascii(val) + a order by idx separator '') ascii_word from cte into result;
with recursive ctee as (
    select surnam as surnam, left(surnam, 1) as vall , 1 as idxx
    union all
    select surnam, substring(surnam, idxx+ 1, 1), idxx+ 1 
    from ctee
    where idxx< char_length(surnam)
)
select group_concat(ascii(vall )  + a order by idxx separator '') ascii_word from ctee into result1;
select group_concat(result, result1) into copy;
insert into id_information_backup.table2  set table2.name = copy;
END$$
delimiter ;

Ответы [ 2 ]

0 голосов
/ 29 мая 2020

В PHPMyAdmin вам нужно установить разделитель в небольшом поле под основным запросом

Он должен быть подписан как «Разделитель»; -)

Я закончил, что меня поймали на этом несколько раз: -D

0 голосов
/ 29 мая 2020

Что происходит, когда вы пытаетесь запустить команду (нажав кнопку «Go» в нижней части текстовой области SQL)?

Если phpMyAdmin показывает ошибки в виде красных кружков с белым x слева от области SQL перед отправкой, это синтаксические предупреждения, которые не повлияют на вашу способность отправить запрос. Они предоставляются в качестве подсказок линтером SQL в phpMyAdmin.

синтаксическое предупреждение phpMyAdmin: phpMyAdmin syntax warning

Если ошибки возникают после отправки операторов, то ошибки происходят из самого MySQL и не вызваны непосредственно phpMyAdmin.

MySQL синтаксическая ошибка: MySQL syntax error

...