반응형
새 데이터베이스를 만드는 간단한 절차를 만들려고합니다. 내가 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
반응형
'MySql' 카테고리의 다른 글
MySQL PHP-ORDER BY와 GROUP BY를 함께 사용하는 방법 (0) | 2020.12.30 |
---|---|
MySQL 다른 테이블에서 얻은 값을 사용하여 한 테이블에서 행 선택 MYSQL (0) | 2020.12.29 |
MySQL 단일 mysql_query () 호출로 여러 쿼리를 실행하는 PHP 코드 (0) | 2020.12.29 |
MySQL 알파벳순으로 정렬 한 다음 숫자 순으로 정렬 (0) | 2020.12.29 |
MySQL 문자열에서 마지막 쉼표 뒤의 모든 문자를 제거하는 쿼리 (0) | 2020.12.29 |
댓글