diff --git a/pkg/services/sqlstore/datasource.go b/pkg/services/sqlstore/datasource.go index 1b69cce8c99..071577eb6d6 100644 --- a/pkg/services/sqlstore/datasource.go +++ b/pkg/services/sqlstore/datasource.go @@ -3,6 +3,8 @@ package sqlstore import ( "time" + "github.com/grafana/grafana/pkg/components/simplejson" + "github.com/go-xorm/xorm" "github.com/grafana/grafana/pkg/bus" @@ -95,6 +97,10 @@ func AddDataSource(cmd *m.AddDataSourceCommand) error { return m.ErrDataSourceNameExists } + if cmd.JsonData == nil { + cmd.JsonData = simplejson.New() + } + ds := &m.DataSource{ OrgId: cmd.OrgId, Name: cmd.Name, @@ -142,6 +148,10 @@ func updateIsDefaultFlag(ds *m.DataSource, sess *DBSession) error { func UpdateDataSource(cmd *m.UpdateDataSourceCommand) error { return inTransaction(func(sess *DBSession) error { + if cmd.JsonData == nil { + cmd.JsonData = simplejson.New() + } + ds := &m.DataSource{ Id: cmd.Id, OrgId: cmd.OrgId, diff --git a/pkg/services/sqlstore/migrations/datasource_mig.go b/pkg/services/sqlstore/migrations/datasource_mig.go index fc617be72a1..54d86d34dba 100644 --- a/pkg/services/sqlstore/migrations/datasource_mig.go +++ b/pkg/services/sqlstore/migrations/datasource_mig.go @@ -130,4 +130,7 @@ func addDataSourceMigration(mg *Migrator) { const migrateLoggingToLoki = `UPDATE data_source SET type = 'loki' WHERE type = 'logging'` mg.AddMigration("Migrate logging ds to loki ds", NewRawSqlMigration(migrateLoggingToLoki)) + + const setEmptyJSONWhereNullJSON = `UPDATE data_source SET json_data = '{}' WHERE json_data is null` + mg.AddMigration("Update json_data with nulls", NewRawSqlMigration(setEmptyJSONWhereNullJSON)) }