找不到数据库连接信息



我检查了我的配置/数据库.php

我有:

'default' => env('DB_CONNECTION', 'mysql'),

在我的连接中,我有:

'mysql' => [
'driver' => 'mysql',
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'unix_socket' => env('DB_SOCKET', ''),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'strict' => true,
'engine' => null,

但我的DB配置似乎发生在其他地方,我还在.env文件中定义了我的变量。但当我在应用程序目录中运行迁移时,它会出错:

[IIlluminate\Database\QueryException]
SQLSTATE[42S21]:列已存在:1060重复列名"usernam e"(SQL:更改表users添加usernamevarchar(191)空)

尽管我已经为用户取出了迁移文件(重命名了它的php扩展名)

任何帮助都将不胜感激。

编辑:迁移文件是否存储在/database/migrations之外的其他地方?

错误duplicate column name 'username'表示数据库有一个名为users的表,该表在.中有列username

似乎发生了什么:在执行php artisan migrate:rollback之前,您从Laravel中取出了迁移文件。这使得数据库保留了迁移编写的所有模式结构。很明显,您不能再次运行相同的迁移,因为在数据库中已经找到了相同的结构。

您应该做的是:登录到您的mysql服务器,删除并再次创建数据库。

  1. mysql -u root -p,则它将提示您输入mysql服务器的密码。

  2. drop database your-db-name

  3. create database your-db-name

然后再次运行迁移,php artisan migrate

进一步诊断方法

您可以在/database/文件夹下创建一个文件"database.sqlite",并将.env的DB_CONNECTION更改为sqlite

运行迁移和回滚,然后再次运行。如果它在任何时候都搞砸了,那就意味着迁移文件中有问题。

最新更新