Я новичок в Laravel
и я следую Laravel Documentations
а также несколько обучающих видео. Тем не менее, я бегу это php artisan migrate
код в моем местном CMD prompt
и это не создает Database Table
в phpmyadmin
, Есть несколько других похожих тем, связанных с этим в stackoverflow
но никто не решил мою проблему. Пожалуйста, не отмечайте этот дубликат.
Хорошо, это так. Я запускаю этот код
php artisan make:migration create_student_table --create=student
и новый файл создается в папке миграции как 2016_04_08_061507_create_student_table.php
Затем в этом файле я запускаю этот code
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateStudentTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('student', function (Blueprint $table) {
$table->increments('id');
$table->timestamps();
$table->string('name', 20);
$table->string('email', 255);
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::drop('student');
}
}
Затем в cmd
я бегу php artisan migrate
но это не создало student
Таблица. Вместо этого он показывает это сообщение
[PDOException] SQLSTATE [42S01]: Базовая таблица или представление уже существует:
1050 Таблица «пользователи» уже существует
я создал users
Таблица несколько дней назад с использованием метода, аналогичного описанному выше. Но новый student
таблица не создается. Я что-то здесь упускаю?
Заранее спасибо.
Это означает, что Laravel пытается запустить users
миграция таблицы в первую очередь. Если вы находитесь в разработке и вам не нужно хранить ваши данные, вы можете просто удалить users
стол, а затем запустить php artisan migrate
РЕДАКТИРОВАТЬ
удалить уже выполненные миграции из папки базы данных \ миграций,
перед запуском новых файлов миграции. после запуска новых миграций
вернуться назад в прошлые миграции, где это было раньше.
Это означает, что вы уже бежали php artisan migrate
один раз и таблица уже присутствует в базе данных. иногда вам нужно сделать composer dump-autoload
если ремесленник лжет.
поэтому вам нужно либо откатить последнее изменение перед редактированием и запуском php artisan migrate
, для отката вы можете использовать PHP artisan migrate:rollback
Также, если вы хотите удалить все изменения, которые вы можете запустить php artisan migrate:reset
,
Есть php artisan migrate --force
заставить принудительно запустить миграцию.
После выполнения всех этих шагов и, если не удается запустить миграцию, если это среда разработки, снова удалите базу данных, создайте базу данных и запустите php artisan migrate
,
У меня была похожая проблема с моей установкой Laravel (mac os Sierra 10.12.16) и использованием MAMP с атомом, и я не нашел окончательного решения, пока не выполнил следующие шаги.
При настройке моей локальной среды я обнаружил, что использование следующих шагов позволило избежать проблем миграции в дальнейшем,
IN AppServiceProvider.php add the following code:
use Illuminate\Support\Facades\Schema;
public function boot()
{
//
Schema::defaultStringLength(191);
}
then in database.php:
'unix_socket' => '/Applications/MAMP/tmp/mysql/mysql.sock',
THEN FINALLY IN .env:
DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=
DB_DATABASE=hackable
DB_USERNAME=root
DB_PASSWORD=root
Надеюсь, это поможет кому-то, так как мне потребовались дни, чтобы, наконец, правильно настроить систему
В вашей базе данных уже есть эта таблица, просто отбросьте ее и позвольте мастеру создать laravel.
У вас есть право на миграцию пользователей? Если так, вставьте свою пользовательскую таблицу создания в:
if(!Schema::hasTable('users')) ...
Иногда, если вы используете сервер MAMP, вы можете получить эту ошибку из-за подключения к базе данных. Это происходит из-за номера порта, обычно при использовании MAMP номер порта базы данных mysql равен 8889, который вы должны изменить в своей конфигурации и выполнить команду artisan, она будет работать наверняка.
Это сработало для меня: удалить все таблицы из базы данных и запустить
php artisan migrate.