[Laavel 5.1] 마이그레이션에서 색인을 만들거나 제거하는 중 오류 발생
5623 단어 Laravellaravel5.1
개시하다
라벨의 마이그레이션부터 열에 색인을 설정하거나 삭제할 때 빠져든다.
[PDOException]
SQLSTATE[42000]: Syntax error or access violation: 1091 Can't DROP '(index_column)'; check that column/key exists
이런 느낌의 착오가 생기다.
등등.분명히왜 없지?
이렇게 하는 거야.
코드
(migrationfile).phpuse Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class MigrationFile extends Migration
{
public $tableName = 'sample_table';
public $connect = 'mysql_test';
public function up() {
Schema::connection($this->connect)->table($this->tableName, function(Blueprint $table) {
$indexes = \DB::connection($this->connect)->select(\DB::raw("SHOW INDEX FROM {$this->tableName};"));
// インデックス削除
$key = 'index_1';
if ($this->hasIndex($indexes, $key))
{
$table->dropIndex([$key]);
}
// インデックス作成
$key = 'index_2';
if (!$this->hasIndex($indexes, $key))
{
$table->index($key);
}
});
}
public function down() {
}
/**
* hasIndex
* @parameter : indexes as object, $key as string
* @return : true or false
**/
private function hasIndex($indexes, $key) {
foreach ($indexes as $index) {
if ($index->Column_name == $key)
{
return true;
}
}
return false;
}
감상
이런 느낌?
Reference
이 문제에 관하여([Laavel 5.1] 마이그레이션에서 색인을 만들거나 제거하는 중 오류 발생), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/tosite0345/items/017c2a3a7754fb8dcd33
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class MigrationFile extends Migration
{
public $tableName = 'sample_table';
public $connect = 'mysql_test';
public function up() {
Schema::connection($this->connect)->table($this->tableName, function(Blueprint $table) {
$indexes = \DB::connection($this->connect)->select(\DB::raw("SHOW INDEX FROM {$this->tableName};"));
// インデックス削除
$key = 'index_1';
if ($this->hasIndex($indexes, $key))
{
$table->dropIndex([$key]);
}
// インデックス作成
$key = 'index_2';
if (!$this->hasIndex($indexes, $key))
{
$table->index($key);
}
});
}
public function down() {
}
/**
* hasIndex
* @parameter : indexes as object, $key as string
* @return : true or false
**/
private function hasIndex($indexes, $key) {
foreach ($indexes as $index) {
if ($index->Column_name == $key)
{
return true;
}
}
return false;
}
Reference
이 문제에 관하여([Laavel 5.1] 마이그레이션에서 색인을 만들거나 제거하는 중 오류 발생), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/tosite0345/items/017c2a3a7754fb8dcd33텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)