在现有表中添加列时出错

时间:2017-02-10 05:17:15

标签: mysql laravel migration

我在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');
    }
 }

1 个答案:

答案 0 :(得分:0)

你做得很好。

要修改/添加现有数据库中的列,您必须安装doctrine/dbal,就像您已经拥有的那样。但是,如果您查看->after()方法,您会发现它只能在MySQL数据库中使用。请在Laravel 5.3 Documentation

中查看此部分

我认为您的问题是您使用的是 MariaDB