2016-06-13 6 views
4

Я использую Laravel и у меня есть миграция с функцией:ошибки PHP ремесленник MIGRATE Laravel

public function up() 
{ 
    Schema::table('articles', function (Blueprint $table) { 
     $table->string('article_title',100)->change(); 
    }); 
} 

и когда я делаю «PHP ремесленника перенастройки» на моем ЦМДЕ я получаю ошибку:

[Doctrine\DBAL\DBALException] Unknown database type enum requested, Doctrine\DBAL\Platforms\MySqlPlatform may not support it.

Я даже не использую перечисление! И у меня также нет никаких других миграций, которые не переносятся и имеют перечисление.

+0

ли вы создать эту таблицу раньше? Если нет, вам нужно создать его. Schema :: create ('articles', function (Blueprint $ table) { $ table-> string ('article_title', 100) -> change(); }); –

+0

У меня есть эта таблица, а также есть этот столбец, но вы хотите изменить длину от 50 до 100 :) – Danielius

ответ

1

Я считаю, что у меня была эта проблема раньше. Проблема в том, что класс Schema, предоставленный фабрике database migration, фактически является абстракцией класса Doctrine\DBAL\Schema, а не прямым дублированием.

Когда вы впервые запустили composer install, было несколько «рекомендуемых» зависимостей, которые вы должны установить. Никто никогда не делает, но в конце концов вы можете найти небольшую ошибку и потратить на нее часы, только для того, чтобы понять, Эй ... Может быть, я должен попробовать эти другие дополнительные зависимости?

Не будьте похожими на меня. Вместо этого попробуйте то, что я изложил ниже.

Вам необходимо прямо добавить "doctrine/dbal": "^2.5", (или любую стабильную версию на момент чтения) в файл composer.json под кодом "require": {.

После того, как вы добавили эту строку, сделать обновление композитора, а затем добавить эту строку в миграции:

use Doctrine\DBAL\Schema\Schema 

После этого, вы не должны видеть, что ошибка больше.

+0

не очень помогает:/на самом деле он даже не находит, что Doctrine \ DBAL \ Schema \ Schema и у меня уже есть доктрина/dbal в моем композиторе – Danielius

+0

@ Danielius Когда вы 'typehint' используете Schema' в своей среде IDE, вы не видите этого? Если вы проверите каталог своего поставщика, не так ли? Если нет, вам необходимо переустановить пакет. – Ohgodwhy

+0

У меня есть доктрина в продавце, и в этой папке доктрины у меня есть dbal, но в ней есть только две папки: bin и lib, если вы спрашиваете об этом, я переустанавливаю ее сейчас. – Danielius

3

Столбец сам по себе не обязательно должен быть перечислением, но ANY столбец в таблице не может быть перечислением.

Вот строка из секции переименования столбцов документации Laravel:

Примечание: Переименование столбцов в таблице с колонкой перечислений не поддерживается.

-1

Ссылка на документацию по Laravel: Changing columns. Вы должны добавить doctrine/dbal к вашему composer.json файл.

Note: Before changing a column, be sure to add the doctrine/dbal dependency to your composer.json file.

Или запустить эту команду:

composer require doctrine/dbal 
+0

Да, как я написал в своем ответе выше, я подробно изложил это. Ваш ответ является дубликатом. – Ohgodwhy

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