programing

라라벨의 Mysql InnoDB 엔진

topblog 2023. 8. 16. 21:54
반응형

라라벨의 Mysql InnoDB 엔진

저는 대규모 및 대규모 이동 메커니즘을 사용하고 있습니다.저는 테이블을 만들고 외부 키를 설정했습니다.그러나 테이블이 MyISSAM이므로 외부 키가 생성되지 않습니다.이 기능을 활성화/구성하는 위치는 어디입니까?(mysql 서버가 아닌 InnoDB로 변경).

/config/데이터베이스를 편집할 수 있습니다.php 파일, mysql 항목 검색 및 변경:

'engine' => null,

로.

'engine' => 'InnoDB',

이렇게 하면 추가 작업을 줄일 수 있습니다.$table->engine = "InnoDB";각 스키마에 대해 ;)

엔진을 다음과 같이 정의합니다.

  Schema::create("models", function(Blueprint $table) {
            $table->engine = "InnoDB";
  }

Schema\Table closure 에서 엔진을 설정할 수 있습니다.

데이터베이스를 사용하지 않는 다른 접근 방식.php)를 포함합니다..env파일:

DB_ENGINE=InnoDB

당신이 가지고 있는지 확인하는 것을 기억하세요.'engine' => env('DB_ENGINE', null),데이터베이스에 있습니다.

나는 @토마스를 찾았습니다.로랑이 가장 좋은 해결책이지만 제 데이터베이스에 있는 기존 테이블은 어떻습니까?

일을 하고 있습니다.

use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class ConvertTablesIntoInnoDB extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        $tables = [
            'users',
            'products',
        ];
        foreach ($tables as $table) {
            DB::statement('ALTER TABLE ' . $table . ' ENGINE = InnoDB');
        }
    }
    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        $tables = [
            'users',
            'products',
        ];
        foreach ($tables as $table) {
            DB::statement('ALTER TABLE ' . $table . ' ENGINE = MyISAM');
        }
    }
}

이렇게 하면 필요할 때 모든 테이블을 변환하고 롤백할 수 있습니다.

Mysql을 5.5 이상으로 업데이트하는 것을 추천합니다.현재 Mysql의 기본 스토리지 엔진은 InoDB입니다.

MySQL 5.5.5 이전 버전에서는 MyISAM이 기본 스토리지 엔진입니다.MySQL 5.5.5에서는 기본값이 InnoDB로 변경되었습니다. MyISAM은 이전(더 이상 사용할 수 없는) ISAM 스토리지 엔진을 기반으로 하지만 많은 유용한 확장 기능을 갖추고 있습니다.

http://dev.mysql.com/doc/refman/5.5/en/myisam-storage-engine.html

완료되면 Laravel을 통해 엔티티 클래스 내의 관계를 쉽게 매핑할 수 있습니다.

서버 측에서 InnoDb 테이블을 사용하는 것이 성공을 위한 최선의 방법입니다.MySQL 워크벤치를 사용합니다.Workbench에서 쉽게 사용할 수 있습니다.기본 설명서를 읽으려면

Schema::create('users', function($table)
{
    $table->engine = 'InnoDB';

    $table->string('email');
});

라라벨 문서처럼: https://laravel.com/docs/4.2/schema#storage-engines

P/s: 링크를 제공하라고 상기시켜준 @Nico Haase에게 감사드립니다.

데이터베이스를 사용하지 않는 사용자에게 가장 적합한 방법입니다.php)는 .env 파일인 DB_ENGINE=InnoDB에 포함됩니다.데이터베이스에 'engine' => env('DB_ENGINE', null)가 있는지 반드시 확인하십시오.

언급URL : https://stackoverflow.com/questions/11358849/mysql-innodb-engine-in-laravel

반응형