diff --git a/internal/data/database_user.go b/internal/data/database_user.go
index 6a570cf2..dfefbc13 100644
--- a/internal/data/database_user.go
+++ b/internal/data/database_user.go
@@ -78,6 +78,9 @@ func (r databaseUserRepo) Create(req *request.DatabaseUserCreate) error {
return err
}
for name := range slices.Values(req.Privileges) {
+ if err = mysql.DatabaseCreate(name); err != nil {
+ return err
+ }
if err = mysql.PrivilegesGrant(req.Username, name, req.Host); err != nil {
return err
}
@@ -99,6 +102,9 @@ func (r databaseUserRepo) Create(req *request.DatabaseUserCreate) error {
return err
}
for name := range slices.Values(req.Privileges) {
+ if err = postgres.DatabaseCreate(name); err != nil {
+ return err
+ }
if err = postgres.PrivilegesGrant(req.Username, name); err != nil {
return err
}
@@ -145,6 +151,9 @@ func (r databaseUserRepo) Update(req *request.DatabaseUserUpdate) error {
}
}
for name := range slices.Values(req.Privileges) {
+ if err = mysql.DatabaseCreate(name); err != nil {
+ return err
+ }
if err = mysql.PrivilegesGrant(user.Username, name, user.Host); err != nil {
return err
}
@@ -163,6 +172,9 @@ func (r databaseUserRepo) Update(req *request.DatabaseUserUpdate) error {
}
}
for name := range slices.Values(req.Privileges) {
+ if err = postgres.DatabaseCreate(name); err != nil {
+ return err
+ }
if err = postgres.PrivilegesGrant(user.Username, name); err != nil {
return err
}
diff --git a/pkg/db/postgres.go b/pkg/db/postgres.go
index c75f6d21..7334af8c 100644
--- a/pkg/db/postgres.go
+++ b/pkg/db/postgres.go
@@ -71,7 +71,15 @@ func (r *Postgres) Prepare(query string) (*sql.Stmt, error) {
}
func (r *Postgres) DatabaseCreate(name string) error {
- _, err := r.Exec(fmt.Sprintf("CREATE DATABASE %s", name))
+ // postgres 不支持 CREATE DATABASE IF NOT EXISTS,但是为了保持与 MySQL 一致,先检查数据库是否存在
+ exist, err := r.DatabaseExist(name)
+ if err != nil {
+ return err
+ }
+ if exist {
+ return nil
+ }
+ _, err = r.Exec(fmt.Sprintf("CREATE DATABASE %s", name))
return err
}
diff --git a/web/src/views/database/CreateUserModal.vue b/web/src/views/database/CreateUserModal.vue
index 94763335..0521b887 100644
--- a/web/src/views/database/CreateUserModal.vue
+++ b/web/src/views/database/CreateUserModal.vue
@@ -59,64 +59,71 @@ watch(
:segmented="false"
@close="show = false"
>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{ $gettext('Submit') }}
+
+
+ {{
+ $gettext('If the privilege databases does not exist, it will be created automatically. ')
+ }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $gettext('Submit') }}
+
diff --git a/web/src/views/database/UpdateServerModal.vue b/web/src/views/database/UpdateServerModal.vue
index de3bc59d..8c5fa6fe 100644
--- a/web/src/views/database/UpdateServerModal.vue
+++ b/web/src/views/database/UpdateServerModal.vue
@@ -27,7 +27,7 @@ watch(
() => show.value,
(value) => {
if (value && id.value) {
- useRequest(database.serverGet(id.value)).onSuccess(({ data }) => {
+ useRequest(database.serverGet(id.value)).onSuccess(({ data }: { data: any }) => {
updateModel.value.name = data.name
updateModel.value.host = data.host
updateModel.value.port = data.port
diff --git a/web/src/views/database/UpdateUserModal.vue b/web/src/views/database/UpdateUserModal.vue
index 39007a70..385e9547 100644
--- a/web/src/views/database/UpdateUserModal.vue
+++ b/web/src/views/database/UpdateUserModal.vue
@@ -24,7 +24,7 @@ watch(
() => show.value,
(value) => {
if (value && id.value) {
- useRequest(database.userGet(id.value)).onSuccess(({ data }) => {
+ useRequest(database.userGet(id.value)).onSuccess(({ data }: { data: any }) => {
updateModel.value.password = data.password
updateModel.value.privileges = data.privileges
updateModel.value.remark = data.remark
@@ -45,32 +45,39 @@ watch(
:segmented="false"
@close="show = false"
>
-
-
-
-
-
-
-
-
-
-
-
- {{ $gettext('Submit') }}
+
+
+ {{
+ $gettext('If the privilege databases does not exist, it will be created automatically. ')
+ }}
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $gettext('Submit') }}
+