Загрузить хранимую процедуру из файла sql

У меня есть файл mysql test.sql, содержащий хранимую процедуру. чтобы загрузить этот файл sql после подключения к базе данных на сервере go, я использовал команду Exec. Но я не получил желаемого результата. Беру код ошибки

1064 You have an error in your SQL syntax; check the manual that corr...

Как я могу загрузить хранимую процедуру из файла sql после подключения базы данных на ходу.

// перейти к разделу кода:

sqlProc, err := ioutil.ReadFile("E:/Qlass/goserv/src/cevir/test.sql")
// handle error

_, err = MAPP.DB.Db.Exec(string(sqlProc[:]))
// handle error

// содержимое test.sql

drop procedure if exists Test;
delimiter ;;
create procedure Test()
begin
    truncate table _prlog;
end ;;
delimiter ;

проблема вызвана командой delimeter. Я удалил эти строки. Проблема решена. Исправленный sql файл.

drop procedure if exists Test;
create procedure Test()
begin
    truncate table _prlog;
end ;

«Но я не получил желаемого результата» - что это значит? Какого результата вы хотели, какой результат вы получили, в чем конкретно ваша проблема?

Adrian 30.07.2018 19:14

Опубликуйте полученную ошибку, если таковая имеется.

Himanshu 30.07.2018 19:17

Я исправил вопрос. Надеюсь, это более наглядно.

Ali Altun 30.07.2018 19:49
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
1
3
331
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я ожидал чего-то большего:

DB, err = sql.Open("mysql", MAPP.CF.Mysql)
if err != nil {
    // handle error
}
data, err := ioutil.ReadFile(`E:/Qlass/goserv/src/modul/modul_sp.sql`)
if err != nil {
    // handle error
}
sqlProc := string(data)
_, err := DB.Exec(sqlProc)
if err != nil {
    // handle error
}

Спасибо за быстрый ответ. Я воспользовался твоим советом. Но я взял тот же код ошибки в строке Db.Exec. Код ошибки: 1064 У вас есть ошибка в синтаксисе SQL; проверьте руководство, которое соответствует ... Я минимизировал количество кода в тестовой хранимой процедуре, насколько это возможно, чтобы уменьшить вероятность ошибки из-за другой команды sql. Под вопросом находится test.sql, который я использовал.

Ali Altun 30.07.2018 19:44

peterSO, я заметил изменение, которое вы внесли в переменную позже. А пока я исправил ваш код. Я хотел вернуть его в исходный вид, на этот раз он был заблокирован правилом смены 6 знаков. Простите. и еще раз спасибо.

Ali Altun 30.07.2018 20:30

проблема вызвана командой разделителя. Я удаляю эти строки. Проблема решена.

Ali Altun 30.07.2018 20:32

Другие вопросы по теме