Я следую гид здесь при изменении столбца в 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
какой правильный путь?
Вам нужен был 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
Не похоже, что ваша проблема связана с миграцией 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: свежий, не беспокойтесь .. Я в среде разработчика
Другой вариант состоит в том, что существует несколько миграций, которые пытаются создать (
Schema::create
) таблицу хранилищ. Не могли бы вы это проверить?