2016-04-08 5 views
-2

一意の列をロールバックするためにはどのような構文Laravelは:私のテーブル名が<code>customers</code>列です

public function down() 
{ 
    Schema::table('customers', function (Blueprint $table) { 
     $table->dropUnique('mail'); 
     $table->string('mail',255)->change(); 
     $table->string('first_name',255)->change(); 
     $table->string('first_name_reading',255)->change(); 
     $table->string('last_name',255)->change(); 
     $table->string('platform',255)->change(); 
    }); 
} 

と試みたが、それは動作しませmail です。

[Illuminate\Database\QueryException] 
    SQLSTATE[42000]: Syntax error or access violation: 1091 Can't DROP 'mail'; check that column/key exists (SQL: alter 
    table `customers` drop index `mail`) 

私に助けてもらえますか? してください、

+1

これでうまくいくはずですが、完全な 'down()'移行関数とエラーメッセージが表示されます。また、そこにユニークなキーがあるかどうか、そしてそのキーが何を持っているかを調べるために、データベースを見てみましょう。 – ceejayoz

+0

1091 'メール'を削除できません。その列/キーが存在することを確認してください(SQL:alter テーブル 'customers'ドロップインデックス' mail') –

+1

名前は 'mail'という名前のインデックスは存在しません。疑問の元のコードは正しい名前だった - '$ table-> dropUnique( 'customers_mail_unique');'。 – ceejayoz

答えて

1

オープンmysqlのコンソールと顧客テーブルの正しいインデックスキーの名前を取得し、あなたのコードで

SHOW INDEX FROM customers; 
+0

1091 'メール'を削除できません。カラム/キーが存在することを確認してください(SQL:alter テーブル 'customers'ドロップインデックス' mail') –

+1

'$ table-> dropUnique( 'customers_mail_unique')'である必要があります。 –

+0

[PDOException] SQLSTATE [42000]:構文エラーまたはアクセス違反:1091 can not DROP 'customers_mail_unique';/ キーが存在することを確認してください –

2

でも笑える$table->dropUnique('correct_name');は、あなたがdropUnique関数に配列パラメータを渡すことができますし、Laravelが生成することを使用しますあなたの正しい名前。試してみてください: $table->dropUnique(['mail'])

参考文献the manual

関連する問題