这是一个非常简单的代码:
$query = "RENAME TABLE myOldTableName TO myNewTableName";
$is_ok = mysql_query($query);
echo ($is_ok) ? "Rename OK" : "Rename aborted";
但它总是打印“Rename aborted”。
我在php.net找到了
When processing a RENAME TABLE query, PHP apparently always returns false,
no matter if the query was successfully processed or not.
我试过mysql_affected_rows
,但没有工作..
知道重命名是否有效的任何想法? (没有其他查询,例如SELECT
或SHOW TABLES
等)。
谢谢!
答案 0 :(得分:1)
嗯,经过多次测试,我们在这里:
RENAME TABLE `mytable_a` TO `mytable_b`
mysql_query : bool(true)
mysql_affected_rows() : int(0)
mysql_info() : bool(false)
RENAME TABLE `tableNotExists` TO `FooBar`
mysql_query : bool(false)
mysql_affected_rows() : int(-1)
mysql_info() : bool(false)
ALTER TABLE `mytable_b` CHANGE `fieldFOO` `fieldBAR` INT(11) NOT NULL
mysql_query : bool(true)
mysql_affected_rows() : int(42053)
mysql_info() : string(42) "Records: 42053 Duplicates: 0 Warnings: 0"
ALTER TABLE `mytable_b` CHANGE `fieldNotExists` `newName` INT(11) NOT NULL
mysql_query : bool(false)
mysql_affected_rows() : int(-1)
mysql_info() : bool(false)
毕竟,RENAME TABLE似乎工作正常。对php.net的评论显然是错误的,我在第一次测试时和他一样错了。
我要感谢 Fahim Parkar 指出解决方案,熵和 Leigh 为我提供替代方案;)
如果出现问题,请告诉我!
答案 1 :(得分:0)
将RENAME TABLE
换行到成功执行SELECT 1 AS STATUS
之类的存储过程
答案 2 :(得分:0)
询问information_schema
表:
mysql_query("SELECT COUNT(*) AS count
FROM information_schema.tables
WHERE table_schema = '$youDatabaseName'
AND table_name = '$myNewTableName'");
或者如果您不喜欢information_schema
:
mysql_query("DESCRIBE $myNewTableName");
为不存在的表返回false
。