Создание базы данных MySQL с переменными - PullRequest
6 голосов
/ 19 сентября 2011

Я хочу сделать что-то вроде

CREATE DATABASE IF NOT EXISTS @database_name;

Из чтения синтаксиса mysql для подготовленных операторов выясняется, что их нельзя использовать для создания баз данных, иначе что-то подобное могло бы быть в порядке.

<code>SET @s = CONCAT('CREATE DATABASE IF NOT EXISTS ',@database_name);
PREPARE stmt FROM @s;
EXECUTE stmt;

В идеале я хочу это как-то Я могу запустить из файла .sql из сценария оболочки

#!/bin/bash

MYSQL="mysql"
`${MYSQL} --version >& /dev/null`
if [ $? != 0 ]; then
    MYSQL="mysql5"
    `${MYSQL} --version > /dev/null`
    if [ $? != 0 ]; then
        echo "Can't find mysql binary?"
        exit 1
    fi
fi

 ${MYSQL} -u root --password=###### -e "set @database_name:='ben_search';source CreateSkeleton.sql;"

Есть идеи?

1 Ответ

2 голосов
/ 27 февраля 2014

Вы можете просто убрать оператор CREATE DATABASE из файла SQL и выполнить его из сценария оболочки:

#!/bin/bash
dbname='my_db'
mysql -e "CREATE DATABASE $dbname"
mysql $dbname < /path/to/file/CreateSkeleton.sql
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...