大型自动增量ID

时间:2014-08-04 20:45:08

标签: php mysql laravel auto-increment

我在桌子上遇到一些奇怪的问题,而不是每次上升1次,而是每次上升10次。

我正在使用

  • ClearDB MySQL Addon for Heroku
  • PHP 5.5.15
  • Apache 2.4.10
  • Laravel dev branch(4.something)

我通过artisan的迁移功能创建了数据库,我的数据库表迁移是

<?php

use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateCheckinTable extends Migration {

    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('checkins', function(Blueprint $table)
        {
            $table->increments('id');

            $table->integer('visitor_id');
            $table->integer('meeting_id');

            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::drop('checkins');
    }

}

但是当我通过这个

创建一个新条目时
    $this->checkin = new Checkin;
    $this->checkin->visitor_id = $this->id;
    $this->checkin->meeting_id = $this->nextMeetingId();
    $this->checkin->save();

Checkin类看起来像

<?php

class Checkin extends Eloquent {

    /**
     * The database table used by the model.
     *
     * @var string
     */
    protected $table = 'checkins';

    /**
     * The attributes excluded from the model's JSON form.
     *
     * @var array
     */
    protected $hidden = array('updated_at', 'visitor_id');

    protected $fillable = array();

    public function meeting(){
        return $this->hasOne('Meeting','id', 'meeting_id');
    }

    public function client(){
        return $this->hasOne('Visitor','id','visitor_id');
    }

}

然而,在F5ing并添加多个条目之后,数据库表现在看起来像

id  visitor_id meeting_id updated_at created_at

1   1   0   2014-08-04 21:25:25 2014-08-04 21:25:25
11  1   0   2014-08-04 21:35:54 2014-08-04 21:35:54
21  1   0   2014-08-04 21:35:57 2014-08-04 21:35:57
31  1   0   2014-08-04 21:35:59 2014-08-04 21:35:59
41  1   0   2014-08-04 21:36:01 2014-08-04 21:36:01
51  1   0   2014-08-04 21:36:03 2014-08-04 21:36:03

正如你所看到的,id每次上升10而不是1。

所以如果有人知道原因,请更新我:)

非常感谢

1 个答案:

答案 0 :(得分:1)

作为遇到此问题的其他人的答案。

重大步骤的原因是由于ClearDB已经建立的MySQL配置。

这里列出了他们这样做的理由:http://www.cleardb.com/developers/help/faq#general_16(感谢Razor为此)

如果您需要自己调查增量设置,可以运行以下查询

SHOW VARIABLES LIKE 'auto_inc%';

这将输出类似

的内容
auto_increment_increment    10
auto_increment_offset   1

所以你可以看到我跳跃的原因是因为它设置为10。

正如@Juergen所说,如果您需要通过以下查询,您应该可以更改此内容。

SET @@auto_increment_increment=1
SET GLOBAL auto_increment_increment=1;

然而我没有改变这个设置,因为ClearDB设置它是有原因的,我只是查询这个错误,这是我错误配置的。

案件已结案,感谢大家的意见。