dash_title
をプロジェクトに追加します。アイデアは人間が読めるIDを持つことです。どちらも簡単にURLで使用できます。laravel 4.2:ユニーク制約付きの文字列フィールドの移行に失敗する
だから、私は私の移行を作成しました:
artisan generate:migration add_dash_title_to_projects_table --fields="dash_title:string"
そして得ることがlaravel 4.2 documentationに指定されている->unique()
を追加します。
public function up()
{
Schema::table('projects', function(Blueprint $table) {
$table->string('dash_title')->unique();
});
}
しかし、私はartisan migrate
行うとき、私は問題が発生した:
[Illuminate\Database\QueryException]
SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '' for key 'projects_dash_title_unique' (SQL: alter table `projects` add unique projects_dash_title_unique(`dash_title`))
[PDOException]
SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '' for key 'projects_dash_title_unique'
と思われます。移行前に10の列が存在していました。しかし、私はそれが事実ではないと確信しています。
とにかく、migratingコマンドによって作成されています。しかし、unique
フラグなし。 mysql
コンソール:
+-------------------+------------------+------+-----+---------------------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------------+------------------+------+-----+---------------------+----------------+
| dash_title | varchar(255) | NO | | NULL | |
私は少し失われています。私は実際にこのフィールドにunique
という制約を作成する必要があります。の仕方?
[OK]を...私はそれを得ました。このエラーは、既存の行の移行によるものです。だから1番目のフィールドを作成します。次に、何かのロジックでデータを移行します。次に、 'unique'制約を追加します。 – mickro