Php 尝试迁移时发生Laravel错误
我想向数据库表用户添加另一列。我做了一个名为Php 尝试迁移时发生Laravel错误,php,laravel,laravel-5,laravel-5.2,Php,Laravel,Laravel 5,Laravel 5.2,我想向数据库表用户添加另一列。我做了一个名为Modify\u users\u table的新迁移,其中包含添加列的代码。源代码没有问题,因为我以前使用过它,但它给了我一个错误,表角色有什么问题吗?我怎样才能解决这个问题?下面是错误和与错误相关的代码 以下是迁移角色: public function up() { Schema::create('roles', function (Blueprint $table) { $table->string('role_n
Modify\u users\u table
的新迁移,其中包含添加列的代码。源代码没有问题,因为我以前使用过它,但它给了我一个错误,表角色有什么问题吗?我怎样才能解决这个问题?下面是错误和与错误相关的代码
以下是迁移角色
:
public function up()
{
Schema::create('roles', function (Blueprint $table) {
$table->string('role_name')->length(55)->unique();
$table->increments('id');
$table->timestamps();
});
}
你需要跑步
php artisan migrate:rollback
如果这也失败了,只需进入并删除所有表,您可能必须这样做,因为您的迁移表似乎混乱不堪,或者您的角色表在运行上一次回滚时没有删除该表
或者,您可以使用migrate:reset
命令回滚应用程序的所有迁移:
php artisan migrate:reset
从数据库中删除该表(我第一次遇到此问题时手动执行) 并在create_users_表迁移中进行此更改
$table->string('email', 60)->unique();
这对我来说很有效
希望这对您也有帮助您有很多问题。您的主要问题是没有向表中添加列。您的脚本正在尝试创建一个新表,如此行所示:
Schema::create('roles', function (Blueprint $table) {
您说您正在尝试向users表添加一列,但您甚至没有使用用户表:而是创建一个名为roles
的表,该表已经存在。最简单的解决方案是按照Dhaval的建议执行:放弃添加的迁移,更新创建用户表的迁移,重新开始
“正确”的答案是创建一个新的迁移,并输入将该列添加到用户表的说明以及删除该列的说明。然后,您可以只进行简单的迁移,而不是对数据库进行核化。看起来是这样的:
public function up()
{
Schema::table('users', function ( Blueprint $table ) {
$table->string('last_name')->after( 'first_name' )->default( '' );
});
}
public function down()
{
Schema::table( 'users', function ( Blueprint $table ) {
$table->dropColumn( ['last_name'] );
});
}
我也有同样的问题,我尝试过类似的东西,它对我来说非常适合。我的Laravel版本是5.5
public function up()
{
Schema::connection('mysql2')->create('images', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->string('image');
$table->timestamps();
});
}
public function down()
{
Schema::connection('mysql2')->dropIfExists('images');
}
我必须在我的项目中使用连接,一个是mysql,另一个是mysql2,因为我的项目是针对具有多个连接的数据库的
因此,我的解决方案是尝试在函数中指定与数据库的连接
默认情况下,连接是mysql,如果您没有在函数中指定它,下面给出了示例。希望这有帮助
public function up()
{
Schema::create('users', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->string('email',60)->unique();
$table->string('password');
$table->rememberToken();
$table->timestamps();
});
}
public function down()
{
Schema::dropIfExists('users');
}
因此,当您使用php artisan进行迁移时,它不会显示错误,这意味着您的角色表已经存在,但它不在
迁移
表中。找出发生这种情况的原因,并通过回滚或重置进行修复。(这将删除表中的所有现有数据)作为一般经验法则,最好将错误作为文本而不是屏幕截图。