ПРИМЕЧАНИЕ: Для корректной обработки 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, например:
Мы используем [gaussdb-go](https://github. com/HuaweiCloudDeveloper/gaussdb-go) в качестве драйвера sql базы данных gaussdb, он включает кэш подготовленных выражений по умолчанию, чтобы отключить его:
The GORM Driver for Oracle provides support for Oracle Database, enabling full compatibility with GORM’s ORM capabilities. It is built on top of the Go Driver for Oracle (Godror) and supports key features such as auto migrations, associations, transactions, and advanced querying.
Prerequisite: Install Instant Client
To use ODPI-C with Godror, you’ll need to install the Oracle Instant Client on your system. Follow the steps on this page to complete the installation.
After that, you can connect to the database using the dataSourceName, which specifies connection parameters (such as username and password) using a logfmt-encoded parameter list.
The way you specify the Instant Client directory differs by platform:
macOS and Windows: You can set the libDir parameter in the dataSourceName.
Linux: The libraries must be in the system library search path before your Go process starts, preferably configured with “ldconfig”. The libDir parameter does not work on Linux.
ПРИМЕЧАНИЕ: Вы также можете использовать 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, и в этом случае вы могли бы просто использовать диалект для этих баз данных.