ПРИМЕЧАНИЕ: Для корректной обработки time.Time, вам нужно включить parseTime как параметр. (больше параметров) Для полной поддержки кодировки UTF-8, вам необходимо изменить charset=utf8 на charset=utf8mb4. Смотрите эту статью для подробностей
db, err := gorm.Open(mysql.New(mysql.Config{ DSN: "gorm:gorm@tcp(127.0.0.1:3306)/gorm?charset=utf8&parseTime=True&loc=Local", // имя источника данных DefaultStringSize: 256, // размер значения по умолчанию для строковых полей DisableDatetimePrecision: true, // отключить точность полей типа datetime, которая не поддерживается до версии MySQL 5.6 DontSupportRenameIndex: true, // drop & create при переименовании индекса, переименование индекса не поддерживается с версии MySQL 5.7, MariaDB DontSupportRenameColumn: true, // `change` при переименовании столбца переименование столбца не поддерживалось до MySQL 8, MariaDB SkipInitializeWithVersion: false, // авто найтройка в зависимости от текущей весрии MySQL }), &gorm.Config{})
Настройка драйвера
GORM позволяет настроить драйвер MySQL с помощью параметра DriverName, например:
ПРИМЕЧАНИЕ: Вы также можете использовать file::memory:?cache=shared вместо пути к файлу. Это позволит SQLite использовать временную базу данных в системной памяти. (Смотрите SQLite документацию для подробностей)
// Найти пользователя db.Find(&user, "id = ?", 10)
// Добавить нескольких пользователей var users = []User{user1, user2, user3} db.Create(&users) // ... }
Пул подключений
GORM использует database/sql для поддержания пула подключений
sqlDB, err := db.DB()
// SetMaxIdleConns устанавливает максимальное количество подключений в пуле незанятых подключений. sqlDB.SetMaxIdleConns(10)
// SetMaxOpenConns устанавливает максимальное количество открытых подключений к базе данных. sqlDB.SetMaxOpenConns(100)
// SetConnMaxLifetime устанавливает максимальное время, в течение которого соединение может использоваться повторно. sqlDB.SetConnMaxLifetime(time.Hour)
Смотрите раздел Общий интерфейс для получения подробной информации
Неподдерживаемые базы данных
Некоторые базы данных могут быть совместимы с диалектом mysql или postgres, и в этом случае вы могли бы просто использовать диалект для этих баз данных.