Мне нужно создать тысячи баз данных, например, ниже:
CREATE DATABASE adr0711 CHARACTER SET utf8 COLLATE utf8_bin;
CREATE DATABASE adr0712 CHARACTER SET utf8 COLLATE utf8_bin;
CREATE DATABASE adr0713 CHARACTER SET utf8 COLLATE utf8_bin;
CREATE DATABASE adr0714 CHARACTER SET utf8 COLLATE utf8_bin;
CREATE DATABASE adr0715 CHARACTER SET utf8 COLLATE utf8_bin;
CREATE DATABASE adr0717 CHARACTER SET utf8 COLLATE utf8_bin;
CREATE DATABASE adr0718 CHARACTER SET utf8 COLLATE utf8_bin;
обычно MySQL выдает ошибку при выполнении некоторых команд:
mysql> CREATE D
-> CREATE DATABASE adr0653 CHARACTER SET utf8 COLLATE utf8_bin;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'D
CREATE DATABASE adr0653 CHARACTER SET utf8 COLLATE utf8_bin' at line 1
другая ошибка:
mysql> CREATE DATABASE adr0614 CHARACTER SET utf8 COLLATE utf8_bin;
;
Query OK, 1 row affected (0.02 sec)
Есть ли способ массового создания базы данных без ошибок? { {1}} Я думал, что использование &&
будет работать, но я понятия не имею, как использовать его в команде.
Да это - Ваш отказ. MySQL не делает вещей, не будучи сказанным.
У меня нет абсолютно никакой проблемы при создании 999 баз данных в течение секунды:
/tmp # wc -l db.sql
999 db.sql
/tmp # mysql -u root -p < db.sql
Enter password:
/tmp # echo "SHOW DATABASES; "|mysql -u root -p
Enter password:
Database
information_schema
adr01
adr010
adr0100
adr0101
adr0102
adr0103
adr0104
adr0105
И только посмотреть на то, что я имею в своем db.sql:
/tmp # tail -20 db.sql
CREATE DATABASE adr0980 CHARACTER SET utf8 COLLATE utf8_bin;
CREATE DATABASE adr0981 CHARACTER SET utf8 COLLATE utf8_bin;
CREATE DATABASE adr0982 CHARACTER SET utf8 COLLATE utf8_bin;
CREATE DATABASE adr0983 CHARACTER SET utf8 COLLATE utf8_bin;
CREATE DATABASE adr0984 CHARACTER SET utf8 COLLATE utf8_bin;
CREATE DATABASE adr0985 CHARACTER SET utf8 COLLATE utf8_bin;
CREATE DATABASE adr0986 CHARACTER SET utf8 COLLATE utf8_bin;
CREATE DATABASE adr0987 CHARACTER SET utf8 COLLATE utf8_bin;
Я уверен, что Вы делаете что-то не так. Поместите свои операторы в файл и затем выполните тот файл в MySQL. При попытке вставить его в консоли MySQL, что-то могло бы быть неправильным с Вашим буфером или Вашим соединением, вызывающим то поведение.
Я поднял сценарий, ниже которого генерирует файл с 25 000 CREATE DATABASE... операторы.
#!/bin/bash
dnamec=0
while [ $dnamec -le 25000 ]
do
echo "CREATE DATABASE adr$dnamec CHARACTER SET utf8 COLLATE utf8_bin;" >>dbgen.sql
echo "DROP DATABASE adr$dnamec ;" >> cleanup.sql
let dnamec=$dnamec+1
done
демонстрационный вывод
CREATE DATABASE adr0 CHARACTER SET utf8 COLLATE utf8_bin;
CREATE DATABASE adr1 CHARACTER SET utf8 COLLATE utf8_bin;
CREATE DATABASE adr2 CHARACTER SET utf8 COLLATE utf8_bin;
.
.
.
CREATE DATABASE adr24998 CHARACTER SET utf8 COLLATE utf8_bin;
CREATE DATABASE adr24999 CHARACTER SET utf8 COLLATE utf8_bin;
CREATE DATABASE adr25000 CHARACTER SET utf8 COLLATE utf8_bin;
Я использовал команду
mysql -u root -p <dbgen.sql
и это создает 25 000 баз данных приблизительно за 5 минут без любых проблем. Какую команду выполняют, чтобы сделать задание?