1

我的网站数据库在另一台安装了 v5.5 的机器(MySQL DB)上运行。当前机器(使用 PhP / Drupal)在 5.1 上。

将我当前机器上的 MySQL 从 v5.1 升级到 v5.5,这样我就可以在同一个机器上同时拥有 Drupal 和 MySQL(完成所有卫生步骤 - mysql_upgrade,my.cnf 配置正确)。

MySQL 授予权限也授予 resp 数据库用户。MySQL 日志中没有错误(消除了所有错误)。

该特定功能与早期设置(另一台机器上的 5.5 数据库)完美配合,但是我在当前设置中遇到了一些问题。见下文。

    PDOException: SQLSTATE[42000]: Syntax error or access violation: 
    1305 FUNCTION xxx_system.gen_stat_as_due_ors does not exist: 
    SELECT gen_stat_as_due_ors(:xx_number, :assigned_date); Array ( [:xx_number] => 5229 
    [:assigned_date] => 2013-04-08 00:00:00 ) in xxx_utils_get_report_rep4a1() 
    (line 403 of /home/xxx/public_html/sites/all/modules/custom/xxx_utils/xxx_utils.reports.inc).

Linux 2.6.32-042stab076.8 x86_64

一直在我的机器上和互联网上拼命寻找解决方案(现在 2 天!!!)不走运!

任何帮助将不胜感激。

4

1 回答 1

0

看起来您的功能在新主机1305上不存在,您在此处收到错误“功能不存在”,请验证您的功能在新主机上是否存在。我强烈怀疑您没有权限。如果缺少EXECUTE权限,您会看到错误1370“命令拒绝用户”。您可以通过发出以下命令检查该功能是否存在SHOW FUNCTION STATUS

因此,在您的情况下,我建议您检查转储文件的例程,--routines默认情况下该选项为 false。因此例程(函数、存储过程)不会包含在您的转储中。您可以通过简单地使用 mysqldump 转储旧数据来迁移丢失的例程,类似的方法mysqldump --routines --no-create-info --no-data --no-create-db yourdatabasename > routines.sql可以解决问题。之前请查阅手册页,我没有测试上面的命令。

当然,如果您有必要的语句,您也可以手动添加缺少的功能。

于 2013-07-30T09:31:55.040 回答