mirror of
https://gitee.com/dromara/mayfly-go
synced 2025-11-03 16:00:25 +08:00
* fix: 达梦数据库连接修复,以支持带特殊字符的密码和schema * fix: oracle bug修复 * feat: dbms支持sqlite * fix: dbms 修改字段名bug
39 lines
801 B
Go
39 lines
801 B
Go
package sqlite
|
||
|
||
import (
|
||
"database/sql"
|
||
"errors"
|
||
_ "github.com/mattn/go-sqlite3"
|
||
"mayfly-go/internal/db/dbm/dbi"
|
||
"os"
|
||
"sync"
|
||
)
|
||
|
||
var (
|
||
meta dbi.Meta
|
||
once sync.Once
|
||
)
|
||
|
||
func GetMeta() dbi.Meta {
|
||
once.Do(func() {
|
||
meta = new(SqliteMeta)
|
||
})
|
||
return meta
|
||
}
|
||
|
||
type SqliteMeta struct {
|
||
}
|
||
|
||
func (md *SqliteMeta) GetSqlDb(d *dbi.DbInfo) (*sql.DB, error) {
|
||
// 用host字段来存sqlite的文件路径
|
||
// 检查文件是否存在,否则报错,基于sqlite会自动创建文件,为了服务器文件安全,所以先确定文件存在再连接,不自动创建
|
||
if _, err := os.Stat(d.Host); err != nil {
|
||
return nil, errors.New("数据库文件不存在")
|
||
}
|
||
return sql.Open("sqlite3", d.Host)
|
||
}
|
||
|
||
func (md *SqliteMeta) GetDialect(conn *dbi.DbConn) dbi.Dialect {
|
||
return &SqliteDialect{conn}
|
||
}
|