2016-09-23 4 views
0

Я нахожу миграцию на Laravel 5.1 и после создания таблицы я переименовываю имя таблицы и столбцы. Он работает с миграцией для базы данных MySQL, но на SQL Server 2008 не удается переименовать столбцы и выдает следующую ошибку:Переименовать столбец миграции Laravel 5.1 [SQL SERVER] [Linux]

Next Doctrine\DBAL\DBALException: An exception occurred while executing 'SELECT col.name, 
        type.name AS type, 
        col.max_length AS length, 
        ~col.is_nullable AS notnull, 
        def.definition AS [default], 
        col.scale, 
        col.precision, 
        col.is_identity AS autoincrement, 
        col.collation_name AS collation, 
        CAST(prop.value AS NVARCHAR(MAX)) AS comment -- CAST avoids driver error for sql_variant type 
      FROM  sys.columns AS col 
      JOIN  sys.types AS type 
      ON  col.user_type_id = type.user_type_id 
      JOIN  sys.objects AS obj 
      ON  col.object_id = obj.object_id 
      JOIN  sys.schemas AS scm 
      ON  obj.schema_id = scm.schema_id 
      LEFT JOIN sys.default_constraints def 
      ON  col.default_object_id = def.object_id 
      AND  col.object_id = def.parent_object_id 
      LEFT JOIN sys.extended_properties AS prop 
      ON  obj.object_id = prop.major_id 
      AND  col.column_id = prop.minor_id 
      AND  prop.name = 'MS_Description' 
      WHERE  obj.type = 'U' 
      AND  (obj.name = 'roles' AND scm.name = SCHEMA_NAME())': 

Мне нужна миграция, работающая в обеих базах данных. Мой миграции код:

public function up() 
{ 
    Schema::create('cat_tipo_usuario', function (Blueprint $table) { 
     $table->increments('id_tipo_usuario'); 
     $table->string('txt_tipo_usuario'); 
     $table->timestamps(); 
    }); 
    //Se renombra la tabla 
    Schema::rename('cat_tipo_usuario','roles'); 
    //Se cambia el nombre de las columnas 
    Schema::table('roles',function($tabla){ 
    $tabla->renameColumn('id_tipo_usuario','id'); 
    $tabla->renameColumn('txt_tipo_usuario','nombre'); 
    }); 
} 

Если я комментируйте строки, где я переименовывать столбцы миграции нормально работает, поэтому водитель и связь работают хорошо.

ответ

0

Я думаю, что причиной чего является переименование поля первичного ключа.

Пожалуйста, проверьте эту миграцию, чтобы увидеть, если он решает ваши:

Schema::table('roles',function($tabla){ $table->dropPrimary('id_tipo_usuario'); $tabla->renameColumn('id_tipo_usuario','id'); $table->primary('id'); $tabla->renameColumn('txt_tipo_usuario','nombre'); });

Я думаю, что если перед переименованием, вы уронили ограничение первичного ключа, он должен работать!

Смежные вопросы