Попытка переименовать столбцы таблицы в laravel вызывает ошибку

Я следую гид здесь при изменении столбца в Laravel.

У меня стол stores и запустите это в командной строке

php artisan make:migration rename_stores_column --table = "stores" --create

После создания миграции

вот код

class RenameStoresColumn extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::table('stores', function (Blueprint $table) {
          $table->renameColumn('store_iamge', 'store_image');
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::table('stores', function (Blueprint $table) {
          $table->renameColumn('store_image', 'store_iamge');
        });
    }
}

но когда я запускаю php artisan migrate

Я получил эту ошибку,

In Connection.php line 664:

  SQLSTATE[42S01]: Base table or view already exists: 1050 Table 'stores' already exists (SQL: create table `stores` (`id` int unsigned not null auto_increment primary key, `name` varchar(255) null, `address` varchar(255) null, `city` varchar(255) null, `zipcode` varc
  har(255) null, `country` varchar(255) null, `state` varchar(255) null, `latitude` double(10, 6) not null, `longitude` double(10, 6) not null, `description` text null, `phone` varchar(255) null, `email` varchar(255) null, `fax` varchar(255) null, `web` varchar(255) n
  ull, `tags` varchar(255) null, `schedule` varchar(255) null, `store_iamge` varchar(255) null, `marker_image` varchar(255) null, `created_at` timestamp null, `updated_at` timestamp null) default character set utf8 collate utf8_unicode_ci)


In PDOStatement.php line 143:

  SQLSTATE[42S01]: Base table or view already exists: 1050 Table 'stores' already exists

какой правильный путь?

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
4
0
105
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вам нужен был doctrine/dbal?

Prerequisites

Before modifying a column, be sure to add the doctrine/dbal dependency to your composer.json file. The Doctrine DBAL library is used to determine the current state of the column and create the SQL queries needed to make the specified adjustments to the column:

composer require doctrine/dbal

Другой вариант состоит в том, что существует несколько миграций, которые пытаются создать (Schema::create) таблицу хранилищ. Не могли бы вы это проверить?

Douwe de Haan 02.05.2018 09:00
Ответ принят как подходящий

Не похоже, что ваша проблема связана с миграцией rename_stores_column. Похоже, что php artisan migrate пытается повторно запустить миграцию create_stores_table, хотя она уже была запущена.

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

Чтобы решить эту проблему, вы либо запустите новую миграцию (php artisan migrate:fresh), но только если вы находитесь в среде разработки и вам нечего терять.

Или, при миграции create_stores_table, оберните schema create в schema has, поэтому даже если он попытается запустить его, если таблица уже существует, он ничего не сделает:

if (!Schema::hasTable('stores')) {
  Schema::create('stores', function (Blueprint $table) {
    $table->increments('id');

    ...
  });
}

Спасибо, человек, это работает, php artisan migrate: свежий, не беспокойтесь .. Я в среде разработчика

Fil 02.05.2018 10:31

Другие вопросы по теме