【问题标题】:How to properly migrate stored procedures?如何正确迁移存储过程?
【发布时间】:2019-08-07 21:56:24
【问题描述】:

我的任务是将站点从旧客户端服务器转移到新服务器。我已经从旧服务器完成了一个 sqldump 并导入到新服务器中,除了在 php 中使用 mysqli 完成的一些 sql 调用外,它正在工作。

我对存储过程不太熟悉,但我注意到失败的查询如下所示:

$db->query("call functionName($id)");

他们在新服务器上不断返回false,这让我觉得存储过程没有转移。

我对此的调查使我相信这是一个存储过程。但是,当我查看导出它的方法时,它没有任何作用。

旧站点在 Ubuntu 18.04 / MariaDB 10.3.17 上运行 新站点是 Ubuntu 18.04 / MariaDB 10.4.7

我错过了什么吗?任何帮助将不胜感激,感觉这有点不符合我的习惯。

编辑:想用参数--routines --no-create-info --no-data --no-create-db --skip-opt显示sqldump的样子

你可以看到它是空的,那么它是不是存储过程/函数以外的其他东西?

/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;

--
-- Dumping routines for database 'database_name'
--
/*!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 */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;

-- Dump completed on 2019-08-07 17:33:52

【问题讨论】:

标签: php mysql mariadb


【解决方案1】:

您还必须传输存储过程和函数 制作以下 msqldump 并将其导入新数据库。

mysqldump --routines --no-create-info --no-data --no-create-db --skip-opt mydb > mydb.sql

【讨论】:

    【解决方案2】:

    对于任何回顾这一点的人来说,我的解决方案最终是数据库中有另一个用户拥有所有存储过程。这就是我们看不到存储过程的原因。

    所以请仔细检查用户。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-03
      • 2016-08-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多