2011-07-12 8 views
3

PHPを使用してMySQLのフィールドをNOT NULLおよびAUTO_INCREMENTに編集しようとしています。私はこれを行うには、次のルートを試してみましたが、私はエラーを取得し続けます。どんな考え?MySQLフィールドをAUTO_INCREMENTに編集するときのエラー

$con = mysql_connect("host", "user", "pass"); 
if (!$con) 
    { 
    die('Could not connect: ' . mysql_error()); 
    } 

mysql_select_db("database_name", $con); 

$int = "ALTER TABLE `table_name` CHANGE `column_name` `column_name` INT(11) NOT NULL AUTO_INCREMENT"; 

if (!mysql_query($int,$con)) 
    { 
    die('Heres Your Error: ' . mysql_error()); 
    } 

mysql_close($con) 

これがエラーメッセージである:

不正テーブル定義。自動列が1つしかなく、キーとして定義する必要があります。

答えて

3

にテーブルにMySQLのに問題があることを、この新しい自動インクリメントフィールドを追加し、既存のキーをドロップする必要がありますこのインスタンスは "鶏と卵"の状況です。

テーブルにすでにAUTO_INCREMENT列がある場合は、エラーメッセージの前半部分が適用され、AUTO_INCREMENT列は1つだけになります。

AUTO_INCREMENTを使用してテーブルを作成するには、PRIMARY KEYを定義する必要があります。

テーブルにAUTO_INCREMENT列がない場合は、エラーメッセージの後半部分が適用され、AUTO_INCREMENTの作成はPRIMARY KEYと組み合わせて行う必要があります。

ALTER TABLE `table_name` CHANGE `column_name` `column_name` INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY; 
+0

偉大な説明をして、あなたの修正が完璧に働いた:

これを試してみてください!ありがとう – Presto

0

すでに自動増分フィールドがあるか、すでにテーブルに主キーがあります。

あなたの新しい列が自動インクリメントになりたい場合は、あなたが

MySQL Doc on Alter table

関連する問題