我在laravel 5.3中工作,我想在现有表中添加列(即course_chapters)。所以我已经通过命令
创建了迁移文件 php artisan make:migration add_description_to_course_chapters_table --table=course_chapters
已创建迁移文件,我已添加一些代码以在该表中添加列,如下所示
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class AddDescriptionToCourseChaptersTable extends Migration {
public function up() {
Schema::table('course_chapters', function (Blueprint $table) {
$table->text('description')->after('title');
});
}
public function down(){
Schema::table('course_chapters', function (Blueprint $table) {
$table->dropColumn('description');
});
}
}
我运行命令后
php artisan migrate
没有创建表而不是我有错误
←[37;41m
←[39;49m
←[37;41m [Illuminate\Database\QueryException]
←[39;49m
←[37;41m SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error i ←[39;49m
←[37;41m n your SQL syntax; check the manual that corresponds to your MariaDB server ←[39;49m
←[37;41m version for the right syntax to use near ') default character set utf 8 col ←[39;49m
←[37;41m late utf8_unicode_ci' at line 1 (SQL: create table `course_chapters` () def ←[39;49m
←[37;41m ault character set utf8 collate utf8_unicode_ci)
←[39;49m
←[37;41m
←[39;49m
←[37;41m
←[39;49m
←[37;41m [Doctrine\DBAL\Driver\PDOException]
←[39;49m
←[37;41m SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error i ←[39;49m
←[37;41m n your SQL syntax; check the manual that corresponds to your MariaDB server ←[39;49m
←[37;41m version for the right syntax to use near ') default character set utf 8 col ←[39;49m
←[37;41m late utf8_unicode_ci' at line 1
←[37;41m
←[39;49m
←[37;41m [PDOException]
←[39;49m
←[37;41m SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error i ←[39;49m
←[37;41m n your SQL syntax; check the manual that corresponds to your MariaDB server ←[39;49m
←[37;41m version for the right syntax to use near ') default character set utf 8 col ←[39;49m
←[37;41m late utf8_unicode_ci' at line 1
←[39;49m
←[37;41m
←[39;49m
任何答案?
我现有的表格迁移文件是
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CourseChapters extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('course_chapters', function (Blueprint $table) {
$table->increments('id');
$table->integer('course_id');
$table->integer('chapter_id');
$table->string('title', 80);
$table->string('source');
$table->string('source_type');
$table->string('max_attempts');
$table->tinyInteger('status');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::drop('course_chapters');
}
}
答案 0 :(得分:0)
你做得很好。
要修改/添加现有数据库中的列,您必须安装doctrine/dbal
,就像您已经拥有的那样。但是,如果您查看->after()
方法,您会发现它只能在MySQL
数据库中使用。请在Laravel 5.3 Documentation
我认为您的问题是您使用的是 MariaDB 。