DerekT-P Ответов: 2

В mariadb, как использовать имя параметра, которое начинается с подчеркивания?


У меня есть приложение на базе MySql, которое отлично работает. Он использует хранимые процедуры, и все имена параметров начинаются с подчеркивания _
Мой хостинг-провайдер недавно "обновил" мою базу данных разработки с MySql до MariaDB, заявив о 100% совместимости. Теперь я даже не могу войти в систему разработки, получая сообщение об ошибке, что первый названный параметр "неизвестен". Тестирование показывает, что если я изменю все имена параметров на start @ вместо_, то все будет работать нормально.
Однако сделать это означало бы обновить десятки хранимых процедур и сотни строк кода, что повлияло бы на живые системы клиента и, вероятно, потребовало бы некоторого времени простоя.
В долгосрочной перспективе я брошу хостинг-провайдера, который сделал это изменение без предупреждения или уведомления и отказывается признать, что MariaDB и MySql-это не одно и то же.
В краткосрочной перспективе, чтобы позволить мне продолжить тестирование разработки на базе данных MariaDB, есть ли обходной путь, который позволит мне объявить параметр для каждой процедуры или, на худой конец, изменить каждую ссылку на параметр в процедуре, не переименовывая все параметры?

Что я уже пробовал:

Переименование всех параметров (например, _ID в @ID) работает, но не является приемлемым решением.
Я пробовал экранировать все имена параметров в хранимой процедуре (например, `_ID`), но это не решает проблему; все равно получаю
SQL Error (1054): Unknown column '_ID' in 'field list'
Упрощенная версия ИП:
CREATE PROCEDURE `spUserLoad`(
	IN `_ID` INT,
	IN `_UserName` VARCHAR(50)
)
BEGIN
    SELECT * FROM tUser
      WHERE `_ID` = ID
      OR (`_ID` = 0 AND UserName = `_UserName`);
END

2 Ответов

Рейтинг:
1

DerekT-P

уупс, время краснолицых.
Я получал эту ошибку "неизвестное имя столбца" при использовании MySqlWorkbench или HeidiSQL для непосредственного выполнения SP; похоже, что вы не можете использовать именованные параметры в CALL подобное утверждение (Вы можете сделать в Sql Server).
Я тоже получал то же самое. такой же Ошибка "неизвестное имя столбца" при выполнении приложения; оказывается, что (некоторое время назад!) Я добавил несколько дополнительных журналов, которые пытались проверить команду, и обработал параметр _ID по-другому (по замыслу). Однако я ссылался на "ID" вместо "_ID" в своем коде и перечитывал сообщения об ошибках, да, он жаловался на отсутствие ID в списке параметров, а не _ID. Отключение этого нового диагностического журнала решило мою проблему.


Рейтинг:
0

Richard MacCutchan

Я где-то видел подобный вопрос на эту тему. Лучше всего было бы попробовать Вовлекайся - MariaDB.org[^].