我正在研究我的第一个Laravel项目。我正在尝试创建数据库迁移并使用artisan migrate
运行它们。迁移未运行,命令不返回任何输出。
关键事实:
artisan make:migration
使用正确的文件路径创建迁移文件。database/migrations
文件夹中没有文件时,我会收到Nothing to migrate
命令。artisan migrate --verbose
也不会返回任何输出。storage/logs
上的权限为drwxrwxrwx.
我是该目录的所有者。storage/logs/laravel.log
不包含任何与迁移有关的内容。我在下面列出了第一次迁移的代码。
这个问题与this question的不同之处在于前一个用户没有使用正确的命名约定。该问题包含有关迁移过程的详细答案。这没有用,因为我没有得到任何输出。在我输入这个问题时,我也回顾了SO提出的问题。
也许我的配置不正确?我需要做些什么来实现这些迁移?
2017_01_17_151638_user.php
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
// Create the classes associated with user management.
class UserMigration extends Migration
{
public function up()
{
Schema::create('tblUser', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->string('email')->unique();
$table->string('password');
$table->rememberToken();
$table->timestamps();
});
Schema::create('tblUserPasswordReset', function (Blueprint $table) {
$table->string('email')->index();
$table->string('token')->index();
$table->timestamp('create_date')->nullable();
});
}
public function down()
{
Schema::dropIfExists('tblUserPasswordReset');
Schema::dropIfExists('tblUser');
}
}
答案 0 :(得分:4)
试
php artisan migrate:rollback
然后尝试
php artisan migrate
Laravel跟踪已经运行的迁移,所以如果你以前运行它,它知道并且不会再次执行它,除非你回滚它并且我遇到这个直到我将它们回滚然后再次运行迁移
答案 1 :(得分:1)
对我来说,让它工作的唯一方法是重新启动mysql服务(在OSX中,从未在debian上看到过这个)。
答案 2 :(得分:0)
仔细检查以下内容:
database/migrations
database/migrations
文件夹的权限是laravel install附带的默认权限答案 3 :(得分:0)
答案 4 :(得分:0)
尝试:composer dump-autoload
然后再次运行php artisan migrate
答案 5 :(得分:0)
不要错过将迁移添加到DatabaseSeeder.php。请参阅此文档Calling Additional Seeders。
在DatabaseSeeder中添加:
$this->call(UserMigration::class);
希望它有所帮助。
答案 6 :(得分:0)
这个确切的问题没有列出的解决方案改变任何东西。在这种情况下适用于我的未提及的解决方案是
sc queryex vmms : note pid
taskkill /f /pid pidnumber from above command
我已经彻底消灭了所有东西并且从头开始,忘了重新创作作曲家并安装一切。
答案 7 :(得分:0)
我能够重现迁移无错误但尚未迁移的情况的唯一方法是在配置中未指定数据库模式名称以及连接名称。
在 .env 文件中,确保以下设置具有值:
DB_CONNECTION=master
DB_DATABASE=my_databse_name
或者 /config/database.php :
'default' => env('DB_CONNECTION', 'master'),
'connections' => [
'master' => [
'driver' => 'mysql',
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'my_databse_name'),
'username' => env('DB_USERNAME', 'root'),
'password' => env('DB_PASSWORD', ''),
'unix_socket' => env('DB_SOCKET', ''),
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => 'cms_',
'strict' => true,
'engine' => null,
],
],
答案 8 :(得分:0)
我很确定我已经解决了这个问题。
我在MySQL中创建了一个新用户,并通过mysql shell为所有数据库分配了所有权限:
CREATE USER 'user1'@'localhost' IDENTIFIED BY 'password';
GRANT ALL ON *.* to 'user1'@'localhost';
不要忘记在.env中更改连接信息:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=blog
DB_USERNAME=user1
DB_PASSWORD=password
答案 9 :(得分:0)
本月初我遇到了这个问题,我所做的是我仔细检查了对mysql服务器的配置,以重新启动mysql服务器和IDE本身
答案 10 :(得分:0)
我认为迁移的类名应该是 User 而不是 UserMigration 因为 laravel 使用文件名查找类,而您的文件有一个 slug 用户而不是用户迁移。