Я развертываю проект barebone Laravel для Microsoft Azure, но всякий раз, когда я пытаюсь выполнить php artisan migrate
, я получаю сообщение об ошибке:
[2015-06-13 14:34:05] production.ERROR: исключение 'Symfony\Component\Debug\Exception\FatalErrorException' с сообщением 'Class' 'not found' в D:\home\site\vendor\Laravel\рамки\SRC\Осветите\Database\Миграции\Migrator.php: 328
Трассировка стека:
#0 {main}
В чем может быть проблема? Большое спасибо
Класс миграции
<?php
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateUsersTable extends Migration {
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('users', function(Blueprint $table)
{
$table->bigIncrements('id');
$table->string('name', 50);
$table->string('surname', 50);
$table->bigInteger('telephone');
$table->string('email', 50)->unique();
$table->string('username', 50)->unique();
$table->string('password', 50);
$table->boolean('active')->default(FALSE);
$table->string('email_confirmation_code', 6);
$table->enum('notify', ['y', 'n'])->default('y');
$table->rememberToken();
$table->timestamps();
$table->index('username');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::drop('users');
}
}
Для пользователей автозагрузчика PSR-4 (composer.json):
Храните папку миграции внутри массива classmap и не включайте ее внутри объекта psr-4 под автозагрузкой. Поскольку миграция основного класса Migrator не поддерживает пространство имен. Например:
"autoload": {
"classmap": [
"app/database/migrations"
],
"psr-4": {
"Acme\\controllers\\": "app/controllers"
}
}
Затем запустите:
php artisan clear-compiled
composer dump-autoload
php artisan optimize
autoload_psr4.php
и почти опустошает autoload_classmap.php
.autoload_classmap.php
.С этого момента вам больше не придется делать это, и все новые миграции будут работать правильно.
Если при выполнении миграции вы получаете сообщение "Class not found", попробуйте запустить эту команду.
composer dump-autoload
а затем повторно выдаст команду migrate. Подробнее см. на официальном сайте (#Running Migrations): http://laravel.com/docs/master/migrations#running-migrations
"SQLSTATE[42000]: Syntax error specified key was too long; max key length is 767 bytes (SQL error)"
(оба [Illuminate\Database\QueryException]
и [PDOExeption]
. Эти файлы по умолчанию !!! Почему я не могу должным образом использовать эти команды .... Кроме того, миграция: сброс и: откат дают мне Nothing to rollback.
дает Nothing to rollback.
Вы можете помочь?
У меня была такая же проблема некоторое время назад. По-видимому, это распространенная проблема, потому что в документации для Laravel она даже предлагает: http://laravel.com/docs/master/migrations#running-migrations
В основном все, что вам нужно сделать, это обновить некоторые файлы композитора. Просто запустите:
composer dump-autoload
Это обновит файлы автозагрузки композитора, а затем вы сможете запустить обычную миграцию, и это должно сработать! Самый лучший.
Я также запускаю ту же проблему.
Решением для меня было удаление файла миграции и удаление записи из таблицы "миграции" в базе данных.
После этого я запустил
композитор dump-autoload
и, наконец, смог выполнить миграции reset/rollback.
Я удалил один из файлов миграции. столкнулись с той же проблемой, а php artisan migrate:rollback
Затем я попробовал composer dump-autoload
. Снова то же самое получилось.
Я восстановил удаленный файл и попробовал composer dump-autoload
и php artisan migrate:rollback
. Он работает.
У меня была аналогичная ситуация (ошибка класса не найдена) после переноса проекта Laravel 5.2 dev на производство. Производственный сервер искал класс "проект", но имя контроллера было Project.php. Как только я переименовал файл в project.php, было хорошо идти.
При попытке переноса моего проекта я получал тот же самый класс, который не найден. Иногда вы получаете простые вещи. В моем случае я заметил, что мое имя класса было неправильным в моем файле миграции из-за того, что я внес изменения на раннем этапе и не выполнял это изменение.
После исправления имени класса я выполнил композицию dump-autoload, и моя проблема исчезла.
HTH кто-то:]