【问题标题】:Error on php artisan migratephp工匠迁移错误
【发布时间】:2016-06-16 12:13:34
【问题描述】:

我已经阅读了很多关于这个主题的帖子,但没有找到正确的答案。当我写任何命令php artisan migrate 返回一个结果:

[Illuminate\Database\QueryException]
  SQLSTATE[42S02]: Base table or view not found: 1146 Table 'adtmart1.shop_categories' doesn't exist (SQL: select * f
  rom `shop_categories`)


[PDOException]
  SQLSTATE[42S02]: Base table or view not found: 1146 Table 'adtmart1.shop_categories' doesn't exist

我想将使用 Laravel 制作的成品网站移动到本地 Web 服务器上。我使用 Web 服务器 - opensever。有php版本- 5.5,Mysql- 5.5。我编写的控制台的所有命令都将打开。在回复时,请考虑到我是这个领域的新手

【问题讨论】:

  • 你能发布导致错误的迁移文件吗?如果您不知道哪个不起作用,请尝试逐个运行迁移。
  • admart1 数据库中有“shop_categories”这个表吗?
  • 也可能是您正在尝试做例如控制台命令的构造函数中的 ShopCategory::all() 调用。如果你这样做,如果桌子不存在,它会彻底搞砸工匠。
  • @AlankarMore 数据库是空的,要先建表吗?
  • @AlexeyMezenin 如何进行迁移?

标签: php laravel laravel-5


【解决方案1】:

首先,您需要发布导致错误的迁移代码。为此,请尝试一个接一个地运行迁移。从/database/migrations 文件夹中删除所有迁移,然后将第一个(按创建日期的第一个)添加回/database/migrations。然后运行php artisan migrate。如果迁移成功,请执行 secons 迁移等所有步骤。当您看到错误时,您就会知道这是一次迁移导致的。请在此处发布,以便我们提供帮助。

【讨论】:

  • 首先从文件夹 database/migrations 中删除所有文件。然后,通过openserver控制台写入命令:php artisan migrate:make create_users_table。因为在文件夹 database/migrations by date 中,第一个文件是 2014_10_12_000000_create_users_table.php
  • 您不需要使用migrate:make 创建新的迁移,您已经拥有所有迁移。只需将它们一一添加回/database/migrations 文件夹并在每次添加迁移后运行php artisan migrate 命令。
  • 仍然从第一个文件返回错误:“ [Illuminate\Database\QueryException] SQLSTATE[42S02]: Base table or view not found: 1146 Table 'adtmart1.shop_categories' 不存在(SQL : 从shop_categories中选择*)"
  • 当然应该会报错。重要的是这究竟是什么迁移?您需要找到有问题的迁移并将其发布在此处。
  • 出错后我删除了第一个文件并复制了第二个文件并重新编写命令“php artisan migrate”,在此命令之后也出错
【解决方案2】:

您使用Schema::table 更改现有表,您正在寻找用于创建新表的Schema::create

将您的迁移更改为使用Schema::create,您将可以轻松运行迁移:

Schema::create('name_of_table', function(Blueprint $table) {
        {

            $table->increments("id",true);
            $table->string("username")->nullable()->default(null);
            $table->string("password")->nullable()->default(null);
            $table->string("email")->nullable()->default(null);
            $table->timestamps();
        });

我当然使用过虚拟列,而您会使用自己的。

关于问题的更多信息here

【讨论】:

  • 你在 laravel 源码中将它写入你的数据库/迁移文件中
  • 我所有的文件是:Schema::create
  • 我认为错误是由于项目中的某些代码不正确
猜你喜欢
  • 2017-06-20
  • 1970-01-01
  • 2017-11-29
  • 1970-01-01
  • 1970-01-01
  • 2016-05-17
  • 2017-11-29
  • 2014-06-01
  • 2017-07-29
相关资源
最近更新 更多