mirror of
https://gitee.com/dromara/mayfly-go
synced 2025-11-03 16:00:25 +08:00
!124 一些更新和bug
* fix: 代码合并 * feat:支持数据库版本兼容,目前兼容了oracle11g部分特性 * fix: 修改数据同步bug,数据sql里指定修改字段别,导致未正确记录修改字段值 * feat: 数据库迁移支持定时迁移和迁移到sql文件
This commit is contained in:
@@ -12,13 +12,17 @@ import (
|
||||
)
|
||||
|
||||
func init() {
|
||||
dbi.Register(dbi.DbTypeOracle, new(OraMeta))
|
||||
dbi.Register(dbi.DbTypeOracle, new(Meta))
|
||||
}
|
||||
|
||||
type OraMeta struct {
|
||||
const (
|
||||
DbVersionOracle11 dbi.DbVersion = "11"
|
||||
)
|
||||
|
||||
type Meta struct {
|
||||
}
|
||||
|
||||
func (md *OraMeta) GetSqlDb(d *dbi.DbInfo) (*sql.DB, error) {
|
||||
func (om *Meta) GetSqlDb(d *dbi.DbInfo) (*sql.DB, error) {
|
||||
err := d.IfUseSshTunnelChangeIpPort()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
@@ -75,13 +79,38 @@ func (md *OraMeta) GetSqlDb(d *dbi.DbInfo) (*sql.DB, error) {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
|
||||
return conn, err
|
||||
}
|
||||
|
||||
func (om *OraMeta) GetDialect(conn *dbi.DbConn) dbi.Dialect {
|
||||
func (om *Meta) GetDialect(conn *dbi.DbConn) dbi.Dialect {
|
||||
return &OracleDialect{dc: conn}
|
||||
}
|
||||
|
||||
func (om *OraMeta) GetMetaData(conn *dbi.DbConn) *dbi.MetaDataX {
|
||||
func (om *Meta) GetMetaData(conn *dbi.DbConn) *dbi.MetaDataX {
|
||||
|
||||
// 查询数据库版本信息,以做兼容性处理
|
||||
if conn.Info.Version == "" && !conn.Info.DefaultVersion {
|
||||
if conn.GetDb() != nil {
|
||||
_, res, _ := conn.Query("select VERSION from v$instance")
|
||||
if len(res) > 0 {
|
||||
version := cast.ToString(res[0]["VERSION"])
|
||||
// 11开头为11g版本
|
||||
if strings.HasPrefix(version, "11") {
|
||||
conn.Info.Version = DbVersionOracle11
|
||||
conn.Info.DefaultVersion = false
|
||||
} else {
|
||||
conn.Info.DefaultVersion = true
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if conn.Info.Version == DbVersionOracle11 {
|
||||
md := &OracleMetaData11{}
|
||||
md.dc = conn
|
||||
md.version = DbVersionOracle11
|
||||
return dbi.NewMetaDataX(md)
|
||||
}
|
||||
return dbi.NewMetaDataX(&OracleMetaData{dc: conn})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user