Mysql

如何在php中重命名mysql表?

  • August 5, 2011

我已經嘗試了各種方法來從 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 時,不能有任何鎖定的表或活動事務。您還必須擁有對原始表的 ALTER 和 DROP 權限,以及對新表的 CREATE 和 INSERT 權限。

所以很有可能使用者user沒有正確的權限。

引用自:https://serverfault.com/questions/297745