Как мне указать & ldquo; закрыть существующие соединения & rdquo; в сценарии sql

Вдохновленный комментарием @sdfor, вот скрипт bash, выполняющий задание

#!/bin/bash

printf "### Converting MySQL character set ###\n\n"

printf "Enter the encoding you want to set: "
read -r CHARSET

# Get the MySQL username
printf "Enter mysql username: "
read -r USERNAME

# Get the MySQL password
printf "Enter mysql password for user %s:" "$USERNAME"
read -rs PASSWORD

DBLIST=( mydatabase1 mydatabase2 )

printf "\n"


for DB in "${DBLIST[@]}"
do
(
    echo 'ALTER DATABASE `'"$DB"'` CHARACTER SET utf8 COLLATE `'"$CHARSET"'`;'
    mysql "$DB" -u"$USERNAME" -p"$PASSWORD" -e "SHOW TABLES" --batch --skip-column-names \
    | xargs -I{} echo 'ALTER TABLE `'{}'` CONVERT TO CHARACTER SET utf8 COLLATE `'"$CHARSET"'`;'
) \
| mysql "$DB" -u"$USERNAME" -p"$PASSWORD"

echo "$DB database done..."
done

echo "### DONE ###"
exit
142
задан nick 10 November 2009 в 22:56
поделиться

2 ответа

Вы можете отключить всех и откатить их транзакции с помощью:

alter database [MyDatbase] set single_user with rollback immediate

После этого вы можете безопасно удалить базу данных :)

235
ответ дан 23 November 2019 в 22:53
поделиться

Перейдите в студию управления и сделайте все, что вы описываете, только вместо того, чтобы нажимать OK, нажмите Script. Он покажет код, который он будет запускать, который вы затем можете включить в свои сценарии.

В этом случае вы хотите:

ALTER DATABASE [MyDatabase] SET SINGLE_USER WITH ROLLBACK IMMEDIATE
GO
36
ответ дан 23 November 2019 в 22:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: