我在文件2018_02_08_094356_create_currency_table.php
中添加了一个新表格。
这是代码:
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateCurrencyTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('currency', function (Blueprint $table) {
$table->increments('id');
$table->decimal('usdeur', 15, 2);
$table->decimal('usdchf', 15, 2);
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('currency');
}
}
当我运行php artisan migrate
时,我的数据库中只有默认的laravel用户(和迁移)表。没有货币一。
可能是什么原因?
修改
迁移一切都很顺利。问题是:
[Illuminate \ Database \ QueryException] SQLSTATE [42000]:语法错误或访问冲突:1071指定密钥太长;最大密钥长度 是767字节(SQL:alter table users添加唯一 users_email_unique(电子邮件))
[PDOException] SQLSTATE [42000]:语法错误或访问冲突:1071 指定密钥太长;最大密钥长度为767字节
解决方案是在AppServiceProvider.php
public function boot()
{
Schema::defaultStringLength(191);
}
答案 0 :(得分:1)
您需要先运行composer du
来注册迁移类。
然后运行php artisan migrate
命令执行新的迁移。
答案 1 :(得分:1)
打开AppServiceProvider.php 写下面的代码:
<div class="class1" id="id1" data-ng-click="click1(arg)" data-ng-class="{ 'class2': expression, 'class3': expression, 'class4': expression }">
表名必须为复数 使用
回滚迁移public function boot()
{
Schema::defaultStringLength(191);
}
或
从数据库和迁移表中手动删除该表 并尝试以下代码:
php artisan migrate:rollback
代码:
migration command:
php artisan make:migration create_currencies_table
现在运行
class CreateCurrenciesTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('currencies', function (Blueprint $table) {
$table->increments('id');
$table->decimal('usdeur', 15, 2);
$table->decimal('usdchf', 15, 2);
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('currencies');
}
}
答案 2 :(得分:0)
所有迁移记录都记录在表迁移中。它表示您之前已创建它。因此,删除表迁移中有关货币的记录并再次运行php artisan migrate
。更重要的是,刷新您的数据库并检查表格货币是否已创建。