新しいデータベースを作成する簡単な手順を作成しようとしています。私がmysql上で実行しようとしている完全なコードは次のとおりです。
SET @DB_NAME := "mydb";
SET @DB_CREATE:= "CREATE DATABASE ";
DELIMITER //
drop procedure if exists create_db //
create procedure create_db(name TEXT)
BEGIN
DECLARE temp TEXT;
DECLARE user TEXT;
SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = name INTO temp;
if temp = name then
SIGNAL SQLSTATE '45002' SET MESSAGE_TEXT = 'This database already exist';
else
SELECT USER() INTO user;
SET @s = CONCAT('CREATE DATABASE ', name);
PREPARE stmt_create FROM @s;
EXECUTE stmt_create;
DEALLOCATE PREPARE stmt_create;
SET @s = CONCAT('GRANT ALL PRIVILEGES ON ', name, '.* TO ', user, ' WITH GRANT OPTION');
PREPARE stmt_grant FROM @s;
EXECUTE stmt_grant;
DEALLOCATE PREPARE stmt_grant;
END IF;
END //
DELIMITER ;
call create_db(@DB_NAME);
この手順を作成するために、create database ステートメントで変数を使用する方法を参考にしました。mysql でこの手順を実行しているときに、エラーが発生します。
ERROR 1046 (3D000): No database selected
私はそれをたくさんグーグルで検索しましたが、修正できません。さまざまなことを試している間、最初に実行して上記の手順を実行しようとしました:
mysql> USE mysql;
それを使用すると、エラーはなくなりました。と
mysql> show databases;
新しく作成されたデータベースとともにすべてのデータベースを表示しています。デフォルトのデータベースとしてmysqlを使用することが正しいかどうか誰か教えてください。誰か別の方法があれば教えてください。