38

我正在使用 laravel 和 laravel 迁移机制。我创建了表并设置了外键。但是这些表是 MyISSAM,所以没有创建外键。我在哪里启用/配置这个?(将其更改为 InnoDB 而不是在 mysql 服务器中)。

4

8 回答 8

111

您可以编辑 /config/database.php 文件,搜索mysql条目并更改:

'engine' => null,

'engine' => 'InnoDB',

$table->engine = "InnoDB";使您无需为每个模式添加;)

于 2016-06-23T15:37:55.750 回答
12

像这样定义引擎

  Schema::create("models", function(Blueprint $table) {
            $table->engine = "InnoDB";
  }
于 2015-01-02T21:37:25.783 回答
7

您可以在Schema\Table 闭包中设置引擎。

于 2012-07-07T12:34:06.680 回答
4

我发现@ThomasLAURENT 是最好的解决方案,但是我的数据库中现有的表呢?

工作。

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');
        }
    }
}

这将允许我们转换所有表并在需要时回滚它们。

于 2019-06-07T16:13:05.457 回答
3

我建议将您的 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 轻松映射实体类中的关系

于 2012-07-06T17:30:15.413 回答
3

另一种方法(对于不使用 database.php 的方法)是包含在.env文件中:

DB_ENGINE=InnoDB

记得检查你'engine' => env('DB_ENGINE', null),的 database.php 上是否有

于 2018-10-26T12:51:39.803 回答
1

在服务器端使用 InnoDb 表是成功的最佳方式。使用MySQL 工作台。在 Workbench 中很容易。而且,如果您想阅读本机手册

于 2012-10-10T15:00:57.727 回答
1
Schema::create('users', function($table)
{
    $table->engine = 'InnoDB';

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

喜欢文档 Laravel:https ://laravel.com/docs/4.2/schema#storage-engines

P/s:感谢@Nico Haase 提醒我提供链接。

于 2019-03-14T14:31:07.457 回答