Laravel版本5.1.43(LTS)
我使用PHP artisan migrate:在终端回滚然后返回错误消息.但数据库已更改.然后我再次重新输入此命令,没有错误消息.
任何人都可以帮我解决这个问题吗?
[Illuminate\Database\QueryException]
sqlSTATE[42000]: Syntax error or access violation: 1091 Can’t DROP’user_id’; check that column/key exists (sql: alter tablecrm_user
drop indexuser_id
)[PDOException]
sqlSTATE[42000]: Syntax error or access violation: 1091 Can’t DROP ‘user_id’; check that column/key exists
我的迁移代码
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手册:
If columns are dropped from a table, the columns are also removed from any index of which they are a part. If all columns that make up an index are dropped, the index is dropped as well.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。