Для использования MySQL из веб-приложения на Go необходимо установить драйвер для базы данных. Он действует как посредник, переводя команды между Go и самой базой данных MySQL.
Содержание статьи
Найти полный список доступных драйверов можно на гитхабе. Для нашего приложения мы будем использовать популярный драйвер go-sql-driver/mysql.
Рекомендуем вам супер TELEGRAM канал по Golang где собраны все материалы для качественного изучения языка. Удивите всех своими знаниями на собеседовании! 😎
Мы публикуем в паблике ВК и Telegram качественные обучающие материалы для быстрого изучения Go. Подпишитесь на нас в ВК и в Telegram. Поддержите сообщество Go программистов.
Для загрузки драйвера перейдите в папку проекта и выполните команду go get
следующим образом:
1 2 3 |
$ cd $HOME/code/snippetbox $ go get github.com/go-sql-driver/mysql@v1 go: downloading github.com/go-sql-driver/mysql v1.5.0 |
Обратите внимание, что в пути пакета мы добавляем в конце @v1
. Это говорит о том, что мы хотим скачать последнюю доступную версию пакета начиная с 1.X.X
.
На момент написания статьи последней версией является v1.5.0
, но у вас загружаемая версия может быть v1.5.1
, v1.6.0
в зависимости от новых реализов на сайте автора. Поскольку пакет go-sql-driver/mysql
использует семантическое управление версиями для своих реализов, любая версия v1.x.x
должна быть совместима с другими версиями пакета из данной ветки v1
.
Если вы хотите установить последнюю версию, независимо от ее номера, можно просто опустить суффикс @version
. К примеру:
1 |
$ go get github.com/go-sql-driver/mysql |
Если вы хотите скачать определенную версию пакета, можно записать весь номер версии. К примеру:
1 |
$ go get github.com/go-sql-driver/mysql@v1.0.3 |
После установки драйвера взгляните на файл go.mod
(которого мы создали в самом начале данного курса по созданию сайта на golang). Вы должны увидеть новую строку require
, содержащую путь к пакету и точную версию, которая была загружена:
1 2 3 4 5 |
module golangify.com/snippetbox go 1.15 require github.com/go-sql-driver/mysql v1.5.0 |
Вы также увидите, что в папке проекта появился новый файл под названием go.sum
.
Файл go.sum
содержит криптографические контрольные суммы, представляющие содержимое необходимых пакетов. Если вы откроете его, вы увидите что-то вроде следующего:
1 2 |
github.com/go-sql-driver/mysql v1.5.0 h1:ozyZYNQW3x3HtqT1jira07DN2PArx2v7/mN66gGcHOs= github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= |
В отличие от файла go.mod
, файл go.sum
не предназначен для редактирования человеком, и обычно вам не стоит его открывать или тем более редактировать. Этот файл решает две полезные задачи:
- Если вы запустите команду
go mod verify
из терминала, Go проверит, если контрольные суммы загруженных пакетов на компьютере соответствуют записям вgo.sum
, так вы можете быть уверены, что они не были изменены; - Если кому-то еще нужно загрузить все зависимости для проекта, запустив команду
go mod download
— он получит сообщение об ошибке, если будет какое-либо несоответствие между загружаемыми зависимостями и контрольными суммами в файле.
Обновление пакетов в Go
После того, как пакет был загружен и добавлен в файл go.mod
, название пакета и его версия «замораживаются» и самостоятельно они себя не будут обновлять. В будущем, вам все же понадобится знать как правильно обновить пакет в golang.
Чтобы обновить пакет до последней доступной версии или исправления, вы можете просто запустить команду go get
с флагом -u
следующим образом:
1 |
$ go get -u github.com/foo/bar |
Или же, если вы хотите перейти на определенную версию, вам следует выполнить ту же команду, но с суффиксом @version
. Например:
1 |
$ go get -u github.com/foo/bar@v2.0.0 |
Удаление пакетов в Go
Иногда, в процессе сборки приложения, вы можете понять, что какой либо ранее установленный пакет больше не нужен. Возникает вопрос, как правильно удалить пакет из Golang?
Вы можете запустить команду go get
и указать путь к пакету с добавлением @none
в конце. К примеру:
1 |
$ go get github.com/foo/bar@none |
Или, если вы удалили все упоминания о пакете в своем коде, вы можете запустить команду go mod tidy
, которая автоматически удалит все неиспользуемые пакеты из файлов go.mod
и go.sum
.
1 |
$ go mod tidy -v |
Администрирую данный сайт с целью распространения как можно большего объема обучающего материала для языка программирования Go. В IT с 2008 года, с тех пор изучаю и применяю интересующие меня технологии. Проявляю огромный интерес к машинному обучению и анализу данных.
E-mail: vasile.buldumac@ati.utm.md
Образование
Технический Университет Молдовы (utm.md), Факультет Вычислительной Техники, Информатики и Микроэлектроники
- 2014 — 2018 Universitatea Tehnică a Moldovei, ИТ-Инженер. Тема дипломной работы «Автоматизация покупки и продажи криптовалюты используя технический анализ»
- 2018 — 2020 Universitatea Tehnică a Moldovei, Магистр, Магистерская диссертация «Идентификация человека в киберпространстве по фотографии лица»