Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/255.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php laravel迁移:回滚错误_Php_Mysql_Laravel_Laravel 5 - Fatal编程技术网

Php laravel迁移:回滚错误

Php laravel迁移:回滚错误,php,mysql,laravel,laravel-5,Php,Mysql,Laravel,Laravel 5,Laravel版本5.1.43(LTS) 我在终端中使用php-artisan-migrate:rollback,然后返回错误消息。但是数据库被改变了。然后我再次输入此命令,没有错误消息 有人能帮我解决这个问题吗 [照亮\数据库\查询异常] SQLSTATE[42000]:语法错误或访问冲突:1091无法删除'user_id';检查列/键是否存在(SQL:alter tablecrm\u userdrop indexuser\u id) [例外情况] SQLSTATE[42000]:语法错误或访

Laravel版本5.1.43(LTS)

我在终端中使用
php-artisan-migrate:rollback
,然后返回错误消息。但是数据库被改变了。然后我再次输入此命令,没有错误消息

有人能帮我解决这个问题吗

[照亮\数据库\查询异常] SQLSTATE[42000]:语法错误或访问冲突:1091无法删除'user_id';检查列/键是否存在(SQL:alter table
crm\u user
drop index
user\u id

[例外情况] SQLSTATE[42000]:语法错误或访问冲突:1091无法删除“user_id”;检查列/键是否存在

我的迁移代码

public function down()
{
    if (Schema::hasColumn('crm_user', 'user_id')) {
        Schema::table('crm_user', function (Blueprint $table) {
            $table->dropColumn('user_id');
            $table->dropIndex('user_id');
        });
    }
}

删除列时,索引将自动删除。因此,当您尝试单独删除索引时,您会得到一个错误,即它不存在

因此,要么交换订单,要么先删除索引:

$table->dropIndex('user_id');
$table->dropColumn('user_id');
或者干脆删除列,不用担心索引

从MySQL手册:

如果从表中删除列,则这些列也将从它们所属的任何索引中删除。如果删除了构成索引的所有列,则该索引也将被删除

从文件中

若要删除索引,必须指定索引的名称。默认情况下,Laravel会自动为索引指定一个合理的名称。只需连接表名、索引列的名称和索引类型即可

从“geo”表中删除基本索引

$table->dropIndex('geo_state_index')

要删除索引,您需要在
[]
中指定列的名称

而且首先需要删除索引,然后删除列

$table->dropIndex(['user_id']);
$table->dropColumn('user_id');
$table->dropIndex(['user_id']);
$table->dropColumn('user_id');