Laravel Migrations - 表前缀问题

时间:2013-04-08 17:54:10

标签: php migration laravel laravel-3

我正在构建一个虚拟站点来测试Laravel 3.x。

我正在创建我的网站迁移。一切都很好,直到出现以下错误:

SQLSTATE[42s02]: Base table or view not found: 1146 Table 'databasenamehere.prefix_laravel_migrations' doesn't exist

问题是laravel突然开始在'laravel_migrations'表格前加上(当它应该只与其他表格一起使用时)。

我想知道我做错了什么或是否是一个已知的问题。

我正在尝试运行以下迁移(使用 php artisan migrate应用程序命令):

public function up()
{
    Schema::create('siteinfo', function ($table) 
    {
        $table->engine = 'InnoDB';
        $table->string('name');
        $table->string('title')->nullable();
        $table->string('corp_name')->nullable();
        $table->string('corp_addr')->nullable();
        $table->string('corp_phone')->nullable();
        $table->string('corp_city')->nullable();
        $table->string('corp_state')->nullable();
        $table->string('corp_email')->nullable();
        $table->string('main_url')->nullable();
        $table->timestamps();
    });
}

任何帮助都会很棒。

编辑1:

  • 几分钟前我注意到我的表根本没有前缀,即使在config / database.php文件中正确设置了“prefix”配置。
  • 如果删除前缀,一切正常。我知道我可以在每次运行的迁移中手动设置前缀,但是...... [/ li>

2 个答案:

答案 0 :(得分:6)

application->config->database.php中设置prefix如下

'mysql' => array(
'driver'   => 'mysql',
'host'     => 'localhost',
'database' => 'foodb',
'username' => 'root',
'password' => '',
'charset'  => 'utf8',
'prefix'   => 'ula_',       <-- this is where you need to set the table prefix
),

完成设置后,再次migrate:resetmigrate 我这样做了,它的作品很完美

答案 1 :(得分:0)

在Laravel 5.4。*上,我最终创建了artisan命令,使用下面的handle方法在一些表上添加表前缀。

public function handle()
{
    $this->tablePrefix = 'tmp_';

    // Set table prefix
    DB::setTablePrefix($this->tablePrefix);

    $data = [
        '--path' => [
            'database/prefixed-migrations' // Directory Path to migrations which require table prefix 
        ],
        '--database' => 'cli',
        '--force' => true
    ];

    $this->call('migrate', $data); // Next call the migration

    Model::reguard();
}

如果有人希望在某些表上添加前缀而不进行全局设置,希望这会有所帮助。