NOTA: Para manejar time.Time correctamente, necesita incluir parseTime como parámetro. (más parámetros) Para soportar completamente la codificación UTF-8, necesita cambiar charset=utf8 a charset=utf8mb4. Ver este artículo para una explicación detallada
db, err := gorm.Open(mysql.New(mysql.Config{ DSN: "gorm:gorm@tcp(127.0.0.1:3306)/gorm?charset=utf8&parseTime=True&loc=Local", // data source name DefaultStringSize: 256, // default size for string fields DisableDatetimePrecision: true, // disable datetime precision, which not supported before MySQL 5.6 DontSupportRenameIndex: true, // drop & create when rename index, rename index not supported before MySQL 5.7, MariaDB DontSupportRenameColumn: true, // `change` when rename column, rename column not supported before MySQL 8, MariaDB SkipInitializeWithVersion: false, // auto configure based on currently MySQL version }), &gorm.Config{})
Driver Personalizado
GORM permite personalizar el controlador MySQL con la opción DriverName, por ejemplo:
import ( "gorm.io/driver/sqlite"// Sqlite driver based on CGO // "github.com/glebarez/sqlite" // Pure go SQLite driver, checkout https://github.com/glebarez/sqlite for details "gorm.io/gorm" )
NOTA: También puedes usar archivo::memory:?cache=shared en lugar de una ruta a un archivo. Esto le dirá a SQLite que utilice una base de datos temporal en la memoria del sistema. (Ver docs SQLite para esto)