2012-01-24 5 views
2

とfalseを返すかなり簡単なコードです:MySQLのRENAMEはいつもここでのmysql_query

$query = "RENAME TABLE myOldTableName TO myNewTableName"; 
$is_ok = mysql_query($query); 
echo ($is_ok) ? "Rename OK" : "Rename aborted"; 

しかし、それは "名前の変更が中止され、" プリントをalwayls。

私は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を試してみましたが、動作していませんか? (SELECTSHOW TABLESなどのような別のクエリはありません)。

ありがとうございます!

+0

ログファイルを見ましたか? – Toto

+0

私は以下のようにリンクが** TRUE **と返答すると混乱しています** http://ruleant.blogspot.com/2009/03/rename-multiple-tables-in-mysql.html –

+0

@FahimParkar Wow興味深い、私はもう一度テストをします。 –

答えて

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) 

、TABLEの名前を変更するには、正常に動作するようです。 php.netのコメントは明らかに間違っています。私は最初のテストで彼と同じように間違っていました。

私が代わりに私を提供するソリューションに指を入れFahimパーカー、およびエントロピーリーに感謝したいと思います;)

何かが間違っていると思われる場合を教えてください!

0

ラップ成功にSELECT 1 AS STATUSのような何かをするストアドプロシージャ内RENAME TABLE

+0

内部的には、残念ながらストアドプロシージャは使用できません。 –

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を返します。

+0

私はそれについて考えましたが、純粋な理由で 'information_schema'テーブルを使用したくないのです;)実際、他のdevloppersの活動のためにテーブルが最新であるとは確信していません。 –

+0

そのテーブルは、手動で編集しない限り、MySQLによって自動的に更新されますが、常に最新です;)私は別の方法で私の答えを編集しました。 – entropid

+0

私は時には手作業で編集することがあります。さて、私は試してみる。 –

関連する問題