如何在PHP中重命名一个MySQL表?

我尝试了各种各样的事情来获取从PHP重命名的表,包括mysqli(代码如下)和mysql_connect / mysql_query。 我试过重命名表和改变表。 在下面的例子中,我执行它时没有错误。 但是,当我去看看,'trac'表仍然在那里没有'2'结束。

$link = mysqli_connect("lamp1", "user", "pw", "db"); /* check connection */ if (mysqli_connect_errno()) { printf("Connect failed: %s\n", mysqli_connect_error()); exit(); } if ($stmt = mysqli_prepare($link, "rename table trac to trac2")) { mysqli_stmt_execute($stmt); } else echo "error"; 

这是Windows Server 2008机器上的xampp(最新版本)。 Mysql 5.0.7,php 5.3.4。

我可以通过phpMyAdmin没有问题的表重命名!

我可以检查/尝试什么? 有一个日志文件,我可以打开/看看从MySQL方面发生了什么?

使用mysqli_stmt_error($ stmt)找出正在返回的错误,然后采取行动。

引用MySQL手册

执行RENAME时,不能有任何locking的表或活动事务。 您还必须具有原始表上的ALTER和DROP权限,以及新表上的CREATE和INSERT权限。

所以用户user很可能没有正确的权限。