【问题标题】:Something wrong with my Laravel我的 Laravel 出了点问题
【发布时间】:2017-09-03 01:47:41
【问题描述】:

我的 Laravel 肯定有问题。

我安装了 Laravel 5.4。我已经在我的 Windows 上全局安装了 Composer。我有 php artisan 工作,但到处都是错误:


php 工匠修补匠

当我输入php artisan make:model Brand 时,它会显示Model created succesfully. 太棒了,对吧?当我接下来输入 php artisan tinkerApp/Brand::all() 时,它显示 Class 'Brand' not found。

虽然我的app 文件夹中有Brand.php

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Brand extends Model
{
    //
}

顺便说一句,我在 laracast 关注 this series


mySQL

我无法运行mysql 命令,尽管我已经在我的 Windows 上手动安装了 mySQL(全局也是如此)。

它说

'mysql' is not recognized as an internal or external command,
operable program or batch file.

迁移

php artisan migrate 给我这个错误:

[Illuminate\Database\QueryException]
SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key
length is 767 bytes (SQL: alter table `users` add unique `users_email_unique`(`email`))

[PDOException]
SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key
length is 767 bytes

除了php artisan migrate 运行良好之外,它还为我创建了两个表:migrationsusers。我以为那是因为我的\database\migrations 文件夹中有两个文件。但是……

当我说php artisan make:migration create_brands_table --create=brands 时,它确实在此文件夹中创建了一个文件。应该的。我在up() 函数中添加了几行代码,如下所示:

Schema::table('brands', function (Blueprint $table) {
    $table->increments('id');
    $table->string('name');
    $table->text('description');
    $table->timestamps();
});

但它不会创建表。

请注意,我确实编辑了我的.env 文件以建立正确的数据库连接,否则php artisan migrate 将无法在我使用php artsian migrate 命令创建的其他两个表上工作。

它只给出一个已经存在的错误。我也尝试了 migrate:rollback 和 migrate:refresh 。我尝试在composer dump-autoload 命令之后执行此操作,但结果相同。


我在这里迷路了,我显然是 Laravel 的新手,但是我的一些熟悉 Laravel 的朋友从未遇到过我遇到的问题。


我尝试重新安装并创建一个新项目,但所有...猜猜看:结果相同。

【问题讨论】:

  • 在你写完你的品牌迁移之后,你又在做```php artisan migrate``吗?
  • "mySQL on my windows" 你在使用 WAMP 或类似的东西吗?

标签: php mysql laravel composer-php laravel-artisan


【解决方案1】:

关于已经存在的表问题,我之前遇到过,这就是我所做的,首先删除您的数据库文件,在我的情况下,我使用的是 sqlite,所以我的文件是 database.sqlite ,我删除了它并创建了一个新的(不要永久删除它以防万一),正常运行您的迁移以确保一切都适用于普通表,同时删除您的旧品牌迁移,那么当您为 Brands 表创建新迁移时,请丢失 --create 标志,

就像这个php artisan make:migration create_brands_table,此时按照前面提到的那样使用Schema::create而不是Schema::table,希望现在一切正常。

【讨论】:

  • 然后手动将 Schema::create 插入到新的迁移文件中?
  • 是的,只是在你的 up() 方法中存根:Schema::create('brands', function (Blueprint $table) { $table->increments('id'); $table-> string('name'); $table->text('description'); $table->timestamps(); });然后运行 ​​php artisan migrate 就可以了。
  • 谢谢!不知何故,这似乎工作正常......我想知道为什么我不能像 laracast 视频中的指南一样做,不过!但这很好用。
【解决方案2】:

你的命名空间有误,使用 反斜杠App\Brand

要创建表,请使用Schema::create 而不是Schema::table

mysql 部分不是 Laravel 关心的,也不应该出现在这个问题中。无论如何,您应该检查您的环境 PATH 变量。

【讨论】:

  • 我的反斜杠确实是 Psy Shell 内部的问题。但是使用Schema::create 而不是Schema::table 没有区别。而且我的 mysql 命令仍然无法正常工作。
  • mysql 部分不是 Laravel 关心的问题,不应该出现在这个问题中。
  • 好吧,你必须明白我是 Laravel 的新手并且不知道这一点。不过,谢谢!
  • 我假设我可以在不使用 mysql 命令的情况下继续使用 Laravel。因为我可以手动做到这一点。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-04-04
  • 2015-03-09
  • 1970-01-01
  • 2020-04-22
  • 1970-01-01
  • 2012-02-08
  • 1970-01-01
相关资源
最近更新 更多