2017-08-13 198 views
1

enter image description here我以前创建了用户表。现在我创建了一个新的迁移,在我的模式中创建一个新书籍表。当我尝试运行命令laravel迁移不起作用

PHP工匠迁移 它让我看到:

[照亮\数据库\ QueryException] SQLSTATE [42S01]:基表或视图已经存在:1050表 '用户' ALRE 安以轩存在(SQL:CREATE TABLE usersid INT无符号不为空auto_incr EMENT主键,username VARCHAR(255)不为空,email VARCHAR(255)N OT空,password VARCHAR(255)不为空,created_at时间戳默认0 不为空,updated_at时间戳默认为0 NOT NULL)默认字符集 UTF8整理utf8_unicode_ci)

我的问题是一样的为2和代码,我跑是一样的好。 所以,我已经尝试了所有在这里建议的解决方案。但他们不为我工作。因为我不能在帖子上发表评论,我必须将其作为一个新问题发布。希望你会意识到我的关注并帮助我出。

+0

分享迁移代码。看起来你正在创建'users'表。 –

+0

我想你没有从迁移表创建用户表。检查你的迁移表。或者在ur终端运行'php artisan migrate:status'。 –

+0

这里是我的迁移表代码: 公共功能了(){ 架构 ::创建( '任务',函数(蓝图$表){$ 表 - >增量( '身份证'); $ 表 - > text('body'); $ table-> increment('user_id'); $ table-> timestamps(); }); } –

回答

2

谢谢你的结果!

在这种情况下,您可以删除所有表格,并重做php artisan migrate

如果您不想这样做,您可以将已创建的迁移文件名的记录插入到您的migrations表中,然后运行php artisan migrate

在这种情况下,您不需要删除表格。

例如,您似乎创建了users表,因此请插入如下所示的migration2014_10_12_000000_create_users_table的记录。

enter image description here

然后,当你运行php artisan migrate:status,您将得到如下结果。

enter image description here

,如果是这样的话,如果你运行php artisan migratemigration文件后2014_10_12_200000_create_password_resets_table将被执行。

这样,你应该插入已经创建的migration文件名的记录,然后运行php artisan migrate,它会工作的很好!

P.S.

由于@mschuett在Laravel Migration table already exists but i want to add new not the older中说,您的migrations表被搞乱了。

因为,您的数据库中有users表,但不会执行2014_10_12_00000_create_users_table的迁移。

如果存在多个迁移文件,如果您运行它并且某处出现故障,则migration状态为您运行的位置Y

+0

我已经删除了所有的数据库从MySQL,然后当我运行PHP工匠迁移它只显示用户和重置密码表。我手动创建的其他表不在mysql数据库中。 –

+0

问题解决了。谢谢 :) –

1

如您的屏幕截图所示,您的任何迁移都没有实际运行。您必须手动创建了users表,或者您可能运行了迁移,但不知何故被搞砸了。

如果你不介意丢失任何数据表中,最简单的解决方法是(你将失去​​你的表中的所有数据!):

php artisan migrate:refresh 

这将回滚所有迁移,并再次运行它们。

More info in the docs

1

php artisan migrate:refresh将删除所有数据并重新创建表,而migrate只是创建尚不存在的表。

如果只刷新一些表(如果迁移不起作用),帮助我删除迁移表中的这些表和表行,并进一步成功地执行php artisan migrate。 (尚未在4.2版本上试用,但也可能适用于高版本)