![如何在 php 中重命名 mysql 表?](https://linux22.com/image/557482/%E5%A6%82%E4%BD%95%E5%9C%A8%20php%20%E4%B8%AD%E9%87%8D%E5%91%BD%E5%90%8D%20mysql%20%E8%A1%A8%EF%BC%9F.png)
我尝试了各种方法来从 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 端发生了什么?
答案1
使用 mysqli_stmt_error($stmt) 找出返回的错误,然后采取行动。
答案2
引用自 MySQL 手册
执行 RENAME 时,您不能有任何锁定的表或活动事务。您还必须对原始表具有 ALTER 和 DROP 权限,对新表具有 CREATE 和 INSERT 权限。
因此很有可能是用户user
没有正确的权限。