본문 바로가기
MySql

MySQL 프로 시저 생성 오류 1046 (3D000) : 선택된 데이터베이스가 없습니다.

by 베이스 공부 2020. 12. 29.
반응형

새 데이터베이스를 만드는 간단한 절차를 만들려고합니다. 내가 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);


ERROR 1046 (3D000): No database selected

나는 그것을 많이 봤지만 그것을 고칠 수 없습니다. 다른 것을 시도하는 동안 나는 먼저 실행하여 위의 절차를 실행하려고 시도했습니다.

mysql> USE mysql;

그것을 사용하면 오류가 사라집니다. 과

mysql> show databases;

새로 생성 된 데이터베이스와 함께 모든 데이터베이스를 표시합니다. 누군가 mysql을 기본 데이터베이스로 사용하는 것이 올바른지 여부를 말할 수 있습니까? 누군가 다른 방법이 있다면 알려주세요.

 

해결 방법

 

:: use database 를 사용하여 proc을 생성 할 데이터베이스를 선택하거나

데이터베이스 이름 을 사용해보십시오.

create procedure databasename.create_db(name TEXT)

 

참조 페이지 https://stackoverflow.com/questions/17402181

 

 

반응형

댓글