mysql - 手动创建数据库例程功能?

标签 mysql database phpmyadmin

我有一个名为 s3d_db 的旧数据库,我通过 cPanel 对其进行备份,现在我想将此备份导入到名为 att_db 的新数据库中,但是当我这样做时所以 phpmyAdmin 只导入表和数据并询问我 super 权限才能导入例程函数,所以有什么方法可以手动创建这个例程函数以及如何做到这一点?

--
-- Dumping routines for database 's3d_db'
--
/*!50003 DROP FUNCTION IF EXISTS `get_sem_no` */;
/*!50003 SET @saved_cs_client      = @@character_set_client */ ;
/*!50003 SET @saved_cs_results     = @@character_set_results */ ;
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
/*!50003 SET character_set_client  = utf8 */ ;
/*!50003 SET character_set_results = utf8 */ ;
/*!50003 SET collation_connection  = utf8_general_ci */ ;
/*!50003 SET @saved_sql_mode       = @@sql_mode */ ;
/*!50003 SET sql_mode              = '' */ ;
DELIMITER ;;
CREATE DEFINER=`username`@`localhost` FUNCTION `get_sem_no`(`time` time) RETURNS int(11)
BEGIN
DECLARE seminer_no INT DEFAULT FALSE;
SELECT semno INTO seminer_no FROM abs_ceminer_times WHERE time BETWEEN start_time AND end_time AND rest != 1;
RETURN seminer_no;
END ;;
DELIMITER ;
/*!50003 SET sql_mode              = @saved_sql_mode */ ;
/*!50003 SET character_set_client  = @saved_cs_client */ ;
/*!50003 SET character_set_results = @saved_cs_results */ ;
/*!50003 SET collation_connection  = @saved_col_connection */ ;
/*!50003 DROP FUNCTION IF EXISTS `get_student_courses` */;
/*!50003 SET @saved_cs_client      = @@character_set_client */ ;
/*!50003 SET @saved_cs_results     = @@character_set_results */ ;
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
/*!50003 SET character_set_client  = utf8 */ ;
/*!50003 SET character_set_results = utf8 */ ;
/*!50003 SET collation_connection  = utf8_general_ci */ ;
/*!50003 SET @saved_sql_mode       = @@sql_mode */ ;
/*!50003 SET sql_mode              = '' */ ;
DELIMITER ;;
CREATE DEFINER=`username`@`localhost` FUNCTION `get_student_courses`(`st_id` int) RETURNS text CHARSET latin1
BEGIN
  DECLARE course_id INT;
  DECLARE cid_string TEXT;
  DECLARE done INT DEFAULT FALSE;
  DECLARE csr CURSOR FOR SELECT `cid` FROM `abs_student_courses` WHERE abs_student_courses.sid = st_id;
  DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
  SET cid_string = "";
  OPEN csr;
  read_loop: LOOP
    FETCH csr INTO course_id;
    IF done THEN
      LEAVE read_loop;
    END IF;
    SET cid_string = IF(cid_string != '',CONCAT(cid_string,",",course_id),course_id);
  END LOOP;
  CLOSE csr;
  RETURN cid_string;
END ;;
DELIMITER ;
/*!50003 SET sql_mode              = @saved_sql_mode */ ;
/*!50003 SET character_set_client  = @saved_cs_client */ ;
/*!50003 SET character_set_results = @saved_cs_results */ ;
/*!50003 SET collation_connection  = @saved_col_connection */ ;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;

/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;

-- Dump completed on 2018-01-22  8:09:00

最佳答案

删除

DEFINER=`username`@`localhost`

来自CREATE语句的子句。然后它会以你作为创建者来创建例程,而不是复制原始创建者。这不需要SUPER权限。

关于mysql - 手动创建数据库例程功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48469521/

相关文章:

java - Android应用程序如何访问MySQL?

使用 apache2 全新安装后 phpMyAdmin 无法正常工作

mysql - 如何索引sql数据库以使用Match Against查询

android - 具有一对一关系的房间数据库

database - 万维网最大的网站运行在哪些数据库上?

ruby-on-rails - 合并两个数据库列以对数据进行排序

php - 无法在 Windows 10 上运行 phpMyAdmin - session.save_path 问题?

mysql_query 使用 WHERE=$var 排序

mySQL - 转置表并仅打印最大值

mysql - SQL - 列总是对应的吗?