Laravel Migrate:“列已存在”1060 列名重复
Posted
技术标签:
【中文标题】Laravel Migrate:“列已存在”1060 列名重复【英文标题】:Laravel Migrate: "Column Already Exists" 1060 Duplicate Column Name 【发布时间】:2021-09-03 00:21:51 【问题描述】:这是我用来学习的一个新鲜的 laravel 应用程序。没有当前表,因为这将是新的/首次迁移。为什么它给我这个错误:
SQLSTATE[42S21]:列已存在:1060 列名重复 'title' (SQL: 创建表
categories
(id
bigint unsigned not null auto_increment 主键,title
varchar(255) 不为空,detail
varchar(300) 不为空,image
varchar(255) 不为空,title
varchar(255) 不为空,created_at
时间戳为空,updated_at
timestamp null) 默认字符集 utf8mb4 collate 'utf8mb4_unicode_ci')
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateCategoriesTable extends Migration
/**
* Run the migrations.
*
* @return void
*/
public function up()
Schema::create('categories', function (Blueprint $table)
$table->id();
$table->string('title');
$table->string('detail', 300);
$table->string('image');
$table->timestamps();
);
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
Schema::dropIfExists('categories');
【问题讨论】:
交叉检查数据库的 .env 文件设置。希望您的数据库没有此类别表。 它没有。在 phpMyAdmin 中没有“类别”表和“类别”迁移,但是错误表明“标题”列由于某种原因存在两次。 你试过php artisan optimize:clear
和composer dump-autoload
吗?
【参考方案1】:
如果您已更新 categories
表的原始表迁移,则需要将参数 fresh 添加到您的 php artisan migrate
命令中,如下所示:
php artisan migrate:refresh
请注意,这将从数据库中删除所有数据。
如果您不喜欢该方法,请添加change()
添加detail
字段的末尾:
$table->string('detail', 300)->change();
【讨论】:
【参考方案2】:已修复。出于某种原因,我所要做的就是将“详细信息”从字符串更改为如下文本:
$table->string('detail', 300)
到
$table->text('detail', 300)
我不明白为什么会这样,但确实有效。
【讨论】:
以上是关于Laravel Migrate:“列已存在”1060 列名重复的主要内容,如果未能解决你的问题,请参考以下文章
Laravel 4 migrate:rollback with --path on artisan CLI