当前位置: 首页 > 知识库问答 >
问题:

Artisan在已创建表时“无需回滚”

松智勇
2023-03-14

我想使用php artisan migrate进行迁移,但出现了一个错误:

SQLSTATE[42S01]:基表或视图已存在:1050表“用户”已存在

因此,我很自然地想使用php artisan migrate:rollback删除我的表,但我得到了:

没什么可回滚的。

搞什么鬼?它刚才说,users表已经创建。我该怎么办?我可以用phpmyadmin删除表,但我想学习如何使用artisan。

谢谢你的帮助。

共有3个答案

孙震博
2023-03-14

解决方案:

>> php artisan migrate:fresh

它将删除所有表并重新创建所有迁移。

温嘉赐
2023-03-14

在我的例子中,在定义了Schema::defaultStringLength(191)之后 boot()方法中的code>未解决。因为数据库中的migrations表为空。因此,解决方案是打开作曲家的修补程序

$ php artisan tinker
>>> Schema::drop('users')
>>> Schema::drop('password_resets')
>>> Schema::drop('orders')
>>> exit
php artisan migrate

下面是执行上述命令的结果

nishanth@localhost:~/Desktop/html/hutch$ php artisan migrate

在Connection.php第647行:SQLSTATE[42S01]:基表或视图已经存在:1050表用户已经存在(SQL:创建表用户idint无符号不空auto_incr主键,namevarchar(255)not null,emailvarchar(255)not n ull,密码varchar(255)not null,remember_tokenvarchar(100)null,created_at时间戳null,updated_at时间戳null)默认字符集utf8mb4排序utf8mb4_unicode_ci)

在Connection.php第449行中:SQLSTATE[42S01]:基表或视图已存在:1050表'users'alre ady已存在

nishanth@localhost:~/Desktop/html/hutch$ php artisan migrate:rollback
Nothing to rollback.
nishanth@localhost:~/Desktop/html/hutch$ php artisan tinker
Psy Shell v0.8.17 (PHP 7.1.20-1+ubuntu16.04.1+deb.sury.org+1 — cli) by Justin Hileman
>>> Schema::drop('users')
=> null
>>> Schema::drop('password_resets')
=> null
>>> Schema::drop('orders')
=> null
>>> exit
Exit:  Goodbye.
nishanth@localhost:~/Desktop/html/hutch$ php artisan migrate
Migrating: 2014_10_12_000000_create_users_table
Migrated:  2014_10_12_000000_create_users_table
Migrating: 2014_10_12_100000_create_password_resets_table
Migrated:  2014_10_12_100000_create_password_resets_table
Migrating: 2018_08_18_071213_create_orders_table
Migrated:  2018_08_18_071213_create_orders_table
nishanth@localhost:~/Desktop/html/hutch$ 

如果方法down(),也要定义它<否则,它就会显示出来

SQLSTATE[42S02]:找不到基表或视图: 1051未知表'XYZ. ABC'(SQL:删除表ABC

/**
  * Reverse the migrations.
  *
  * @return void
  */
public function down()
{
    Schema::dropIfExists('ABC');
}
施靖
2023-03-14

当出现这个问题时,我将告诉你如何避免这个问题。最终,我只是使用phpmyadmin删除了表。

我看了一个关于Laravel的教程,我看到为了避免错误:

SQLSTATE[42000]:语法错误或访问冲突: 1071指定的密钥太长;最大密钥长度为767字节

我不得不添加使用light\Support\Facades\Schema AppServiceProvider.phpSchema::defaultStringLength(191)中的code> boot()函数中选择code>。但是我认为我可以在defaultStringLength(…)中输入任何数字,所以我输入了255,但迁移不起作用。

按照教程中所说的去做,编写schma::defaultStringL长度(191);。然后,您可以使用php artisan迁移执行迁移,并且它应该正常工作。

 类似资料:
  • 我需要强制< code>[Setup]部分中的指令< code > CreateUninstallRegKey 仅在需要时为卸载创建注册表项。 例如,如果我设置了一个条件来创建卸载注册表项,则只有当条件为True时才能创建该项。否则,不得创建卸载注册表项。 如何在Inno设置中执行此操作? 更新问题 我写的代码是: 使用此代码,卸载注册表项始终在创建。(我写的代码应该是有问题。 如果 ISDone

  • WordPress有一个管理仪表板。在仪表板中,我们可以作为管理员添加新用户。我想在管理员添加新用户时在MySQL中创建一个表。例如,我创建了一个名为John Smith的用户,其用户名为user1;当我成功添加该用户时,将在名为user1的数据库中创建一个表。

  • 我试图在插件激活时创建表,我尝试在类内创建相同的函数并从构造函数调用它,我尝试在类外调用它,最后我尝试创建另一个php文件来使用调用它,但没有成功 插件代码: installer.php 即使我把所有的东西都打对了,也没有任何东西能用

  • 我刚开始使用hibernate,总是会遇到这样的错误: 错误:HHH000388:不成功:创建表用户(id bigint not null auto_increment,mail varchar(255),passwort varchar(255),primary key(id))错误:从存储引擎获取错误-1 这是我的映射类:

  • 得到错误"表客户已经存在"当我试图创建一个表在H2内存数据库使用schema.sql.我使用的是Spring启动版本:2.5.4和以下是我的pom.xml.它的工作正常,如果我使用Spring启动版本:2.4.3 这是我的代码: 当我启动应用程序时,我收到以下错误。如何强制H2使用schema.sql创建表格? 原因:io。r2dbc。spi。R2dbcBadGrammarException:表“

  • Servlet controller.java: 执行时,我收到以下信息: myDb是我的数据库。admin、rescue、not null、varchar(750)、rescue是表名、COL的测试值。名称、空值或非空值、数据类型和主键。