2017-02-10 10 views
1

Im работает в 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

Я отредактировал мое сообщение @AbhilekhSingh – Vinothini

+0

Можно ли приложить файл миграции или схему существующей таблицы? –

ответ

0

Вы делаете это хорошо.

Чтобы изменить/добавить столбик в существующую базу данных, вы должны установить doctrine/dbal, как вы уже знаете. Но если вы посмотрите на метод ->after(), вы увидите, что он работает только в базе данных MySQL. Пожалуйста, смотрите этот раздел в Laravel 5.3 Documentation

Я думаю, что ваша проблема в том, что вы используете MariaDB.

+0

, так что я должен делать для этого – Vinothini

+0

Не используйте метод '-> after()' вообще. – zgabievi

+0

Вместо after() что можно использовать – Vinothini