我在表上遇到一些奇怪的问题,其中有一些自动增量ID,而不是每次都增加1,似乎每次都增加10。
我正在使用
适用于Heroku的ClearDB MySQL插件
PHP 5.5.15
阿帕奇2.4.10
Laravel开发分支(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。
因此,如果有人知道其原因,请告诉我:)
非常感谢
最佳答案
作为其他人遇到此问题的答案。
迈出大步的原因是由于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 d所说,如果需要,可以通过以下查询更改此设置。
SET @@auto_increment_increment=1
SET GLOBAL auto_increment_increment=1;
但是,由于ClearDB设置此设置是有原因的,因此我没有更改此设置,而我只是在查询此设置以防万一这是我配置错误的内容。
案例结案,感谢大家的投入。
关于php - 大型自动增量ID,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25127226/