我用laravel 5.5创建了一个auth项目,并创建了新的迁移,迁移时收到以下错误消息:
在connection.php第647行:
SQLSTATE[42S01]: Base table or view already exists: 1050 Table 'users' already exists
(SQL: create table `users` (
`id` int unsigned not null auto_increment primary key,
`name` varchar(255) not null,
`username` varchar(255) not null,
`email` varchar(255) not null,
`password` varchar(255) not null,
`remember_token` varchar(100) null,
`created_at` timestamp null,
`updated_at` timestamp null,
`role` int not null
) default character set utf8mb4 collate utf8mb4_unicode_ci
)
在connection.php第449行:
SQLSTATE[42S01]: Base table or view already exists: 1050 Table 'users' already exists
我尝试了php artisan迁移——force和php artisanmigrate:rollback
并尝试删除所有选项卡并再次迁移,但仍然存在此错误
4条答案
按热度按时间niknxzdl1#
听起来你使用的数据库已经有
users
table,但不是migration
table。因此,当您运行迁移时,它试图创建users
又是一张table。有两件事你可以尝试:
1) 尝试在mysql中设置一个新的(空的)数据库,并更新您的数据库中的设置
.env
指向此新数据库的文件。跑php artisan migrate
并查看是否正确应用了迁移。2) 使用现有数据库,删除/删除所有表(如果要保留数据,请对其进行备份),然后运行
php artisan migrate
看看这能不能解决问题。hyrbngr72#
是否为表“users”创建了新的迁移?
默认情况下,创建新项目时,laravel将为users表生成迁移。这意味着,如果使用“users”表创建新的迁移,它将尝试创建该表两次,从而导致错误。
您可以删除laravel创建的迁移,更改新表的名称,或者修改laravel迁移,而不是创建自己的迁移。
brccelvz3#
读取cmd(dos)中的错误消息并检查laravel文档后
长度错误我不知道是否有人看到这个错误之前或没有,但当我编辑长度它的工作
我编辑3个迁移如下:-
现在是
第二个是
现在是:-
第三点是:-
现在是:-
pgvzfuti4#
要了解问题并找到解决方案,您需要了解迁移是如何工作的。迁移以创建日期为基础工作。无论何时创建迁移,都会将当前时间戳附加到文件名。迁移是根据这个时间戳运行的。现在,laravel创建了两个迁移,名为2014\u 10\u 12\u 000000\u create\u users\u table.php和2014\u 10\u 12\u 100000\u create\u password\u resets\u table.php。根据laravel的规则,无论何时运行迁移,这两个文件都将迁移,但users表已经存在。删除这些文件,并希望您的问题将得到解决。有一件事,如果您使用模式和迁移在laravel中处理数据库,请不要手动删除db。它会给你带来不必要的麻烦。迁移表跟踪您运行的所有迁移,手动删除数据库将打破在迁移表中保留数据的跟踪。因此,下次运行模式时,laravel将无法理解发生了什么,并将创建错误。希望对你有帮助。