我检查了我的配置/数据库.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
添加username
varchar(191)空)
尽管我已经为用户取出了迁移文件(重命名了它的php扩展名)
任何帮助都将不胜感激。
编辑:迁移文件是否存储在/database/migrations之外的其他地方?
错误duplicate column name 'username'
表示数据库有一个名为users
的表,该表在.中有列username
似乎发生了什么:在执行php artisan migrate:rollback
之前,您从Laravel中取出了迁移文件。这使得数据库保留了迁移编写的所有模式结构。很明显,您不能再次运行相同的迁移,因为在数据库中已经找到了相同的结构。
您应该做的是:登录到您的mysql服务器,删除并再次创建数据库。
-
mysql -u root -p
,则它将提示您输入mysql服务器的密码。 -
drop database your-db-name
-
create database your-db-name
然后再次运行迁移,php artisan migrate
。
进一步诊断方法
您可以在/database/
文件夹下创建一个文件"database.sqlite",并将.env的DB_CONNECTION
更改为sqlite
。
运行迁移和回滚,然后再次运行。如果它在任何时候都搞砸了,那就意味着迁移文件中有问题。