1050 Table already exists

Характеристики:

  • Laravel Версия: 5.5.3
  • Версия PHP: 7.1
  • Драйвер базы данных & Версия: MariaDB 10.1.26

Описание:

Действия по воспроизведению:

проблема

Создает таблицу пользователей и выдает ошибку, но не создает таблицу списков.

Решение

Вот шаги, которые я предпринял, чтобы решить ту же проблему:

В консоли я написал php artisan tinker

Затем снова в консоли, Schema::drop(‘users’)

В конце php artisan migrate и все это сработало.

Другие решения

Я сам решил свою проблему
изменив Мой create_users_table.php

Вот шаги, которые я предпринял, чтобы решить ту же проблему:

php ремесленник делает: миграция create_tableName_table —create = tableName.

php ремесленник мигрировать.

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

создать новую таблицу как 1.

просто сначала удалите эти столбцы из базы данных. и запустите обновление композитора. и затем, наконец, запустите php artisan migrate, это решит вашу проблему. самое простое решение для вашей проблемы.

У меня есть другое решение, я удаляю таблицу миграции, вот мое решение

Есть два возможных решения для этого, как упомянуто по этой ссылке:

php artisan migrate: откат

Во-вторых, сброс столов.

Простой способ решить эту проблему — запустить следующую команду

Я добавляю эту таблицу:

И я получаю 1050 "таблица уже существует"

Но таблица НЕ существует. Есть идеи?

РЕДАКТИРОВАТЬ: больше деталей, потому что все, кажется, не верят мне:)

1146 — Таблица ‘gunzfact_vbforumdb.contenttype’ не существует

1050 — Таблица ‘contenttype’ уже существует

24 ответа

Серьезно, возможно, у вас сломан стол. Попробуйте:

    DROP TABLE IF EXISTS contenttype литий> REPAIR TABLE contenttype литий>

  • Если у вас достаточно прав, удалите файлы данных (в /mysql /data /db_name)

из журнала MySQL:

Я получил эту же ошибку, и REPAIR TABLE (из ответа @ NullUserException) не помог.

В конце концов я нашел это решение :

Для меня без sudo я получил следующую ошибку:

(работает на OS X 10.6)

Вам может потребоваться очистить кеш таблицы. Например:

Я боролся с этим весь день: у меня есть Perl-скрипт, который создает набор таблиц, сначала выполнив DROP IF EXISTS . на них, а затем CREATE их. DROP успешно выполнено, но в CREATE I получено это сообщение об ошибке: table already exists

Я наконец-то дошел до сути: в новой версии MySQL, которую я использую, по умолчанию используется движок InnoDB («show engine G;»), я изменил его в файле my.cnf на значение по умолчанию MyISAM , перезапустил MySQL, и теперь я больше не получаю ошибку «таблица уже существует».

Столкнувшись с той же проблемой (создайте таблицу InnoDB), это то, что в итоге сработало для меня:

Я проверил на основе файлов, разрешения, попытался отремонтировать и очистить, но ничего не получилось.

Так что, если это опция, переместите все рабочие таблицы в другую базу данных, удалите старую (возможно, вам придется вручную удалить любые файлы из папки базы данных, прежде чем перевести на работу) , переименуйте новый, и вы «должны» вернуться на свой путь. По-видимому, все, что «кэшируется» с использованием InnoDB, удаляется вместе с исходной базой данных.

У меня была эта проблема на Win7 в Sql Maestro для MySql 12.3. Чрезвычайно раздражающий, выставочный ограничитель фактически. Ничего не помогало, даже не сбрасывая и не воссоздавая базу данных. У меня есть такая же настройка на XP, и она работает там, поэтому после прочтения ваших ответов о разрешениях я понял, что это должно быть связано с разрешениями Win7. Поэтому я запустил MySql от имени администратора, и хотя Sql Maestro работал нормально, ошибка исчезла. Так что, должно быть, проблема с правами доступа между Win7 и MySql.

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

Я сделал "FLUSH TABLES", и это решило проблему.

У меня возникла та же проблема при создании представления. Представление присутствовало ранее, тогда как из-за некоторых изменений оно было удалено, но когда я попытался добавить его снова, оно показало мне сообщение об ошибке «представление уже существует».

Решение :

Вы можете сделать одну вещь вручную.

  1. Перейдите в папку MySQL, где вы ее установили
  2. Перейдите в папку данных внутри нее.
  3. Выберите базу данных и войдите в нее.
  4. База данных создает файлы формата ".frm".
  5. удалите файл конкретной таблицы.
  6. Теперь снова создайте таблицу.

Он успешно создаст таблицу.

Сначала проверьте, находитесь ли вы в нужной базе данных USE yourDB , и попробуйте Select * from contenttype просто чтобы посмотреть что это такое и действительно ли оно существует .

У меня была такая же проблема в Mac OS X и MySQL 5.1.40. Я использовал eclipse для редактирования своего сценария SQL, а затем попробовал MySQLWorkbench 5.2.28. Вероятно, он преобразовал символы новой строки в формат Mac. Я понятия не имел, что не так с моим скриптом, пока не закомментировал первую строку в файле. После этого этот скрипт был интерпретирован mysql как единый комментарий. Я использовал встроенное приложение TextEdit Mac, чтобы исправить это. После перевода строк в правильный формат ошибка 1050 исчезла.

Обновление для пользователей Eclipse:

Чтобы установить окончание по умолчанию для новых созданных файлов во всем рабочем пространстве:

Окно -> Настройки -> Общее -> Рабочая область -> Новая строка текстового файла разделитель.

Чтобы преобразовать существующие файлы, откройте файл для редактирования и для текущего отредактированного файла перейдите в меню:

Файл -> Преобразовать разделители строк в

У меня был такой же случай. Проблема закончилась тем, что разрешения для родительского каталога.

Я копировал файлы в mysql и из него во время тестирования.

было недостаточно, нужно было:

Извините, что воскресил.

Я борюсь с той же проблемой. Я не могу создать таблицу, даже если она не существует. Я попробовал все вышеупомянутые решения безуспешно.

Моим решением было удалить файлы ib_logfil0 , ib_logfile1 , ibdata1 и auto.cnf из папки данных MySQL; перед удалением этих файлов обязательно остановите службу MySQL.

Затем после перезапуска службы MySQL воссоздал эти файлы, и я смог запустить скрипт резервного копирования, в котором были сохранены все мои CREATE (файл sqldump).

У меня была такая же проблема, и похоже, что имя базы данных чувствительно к регистру. Моя база данных называется:

Пока включен мой сценарий

Как только я изменил имя базы данных на правильный регистр, казалось, что все работает. Использование MYSQL Workbench на MAC OSX

Эта проблема также возникает, если в базе данных существует «представление» (воображаемая таблица) с тем же именем, что и имя нашей новой таблицы.

В моем случае я обнаружил, что это проблема с InnoDB; Я никогда не обнаруживал, в чём была настоящая проблема, но создание в качестве MyISAM позволило его построить

Ты мне не поверишь !! Я просто удалил блок комментариев из моего файла .sql, и теперь он работает .

Удаленный блок комментариев был следующим:

Я оставил проблемную таблицу в одном файле .sql. После этого я удалил комментарии, остался только код, и ошибка исчезла.

Для меня проблема была вызвана тем, что вместо mysqldump использовалась копия файловой системы каталога базы данных mysql. У меня есть несколько очень больших таблиц, в основном MyISAM и несколько таблиц кеша InnoDB, и mysqldump не практично использовать для данных. Поскольку мы все еще работаем с MyISAM, XtraBackup не вариант.

Со мной произошли те же симптомы, что и выше. Таблицы нет, в каталоге нет файлов, которые относятся к этой таблице, но ее нельзя создать, потому что MySQL считает, что она там. Drop table говорит, что это не там, создать таблицу говорит, что это так.

Проблема возникла на двух машинах, обе были исправлены путем копирования резервных копий. Однако я заметил, что в моей резервной копии были файлы .MYD и .MYI, хотя у меня сложилось впечатление, что эти файлы не используются для InnoDB. Файлы .MYD и .MYI имеют владельца root, а файл .frm принадлежит mysql.

Если вы копируете из резервной копии, проверьте права доступа к файлу. Сброс таблиц может работать, но я решил закрыть и перезапустить базу данных.

Черт возьми, у меня была такая же проблема с установочным скриптом osCommerce , пока я не выяснил, что в системе mysql есть много баз данных и create table запрос копирует себя в каждый и, таким образом, удаление только рабочей таблицы на активной базе данных не помогло, мне пришлось удалить таблицу со всех баз данных

Мой оператор CREATE был частью промежуточного дампа env.

Я попробовал все, что было упомянуто выше. Я не получил решение. Однако мой путь к искуплению был:

Я наткнулся на тот факт, что (один из многих в) оператор CREATE справился, когда я исправил чувствительность к регистру имени базы данных. Это что-то щелкнуло. Я повторил то же самое для других таблиц.

Однако появилась новая ошибка. Прямые кавычки для «комментариев» вызывали синтаксическую ошибку. Я был потрясен. заменил их, но новая ошибка начала появляться. Наконец-то я понял решение.

РЕШЕНИЕ. Дамп, который я использовал, мог быть из другой версии MySql. Я получил разрешение на подключение к промежуточному MYsql, используя локальный (установленный на моей машине) инструмент MySQL. Я не входил в промежуточный сервер для входа в рабочую среду mysql. Создал дамп оттуда. Побежал на свалку и все заработало как сладкое.

Пытался импортировать резервный файл sql, но получал ошибку; 1050 «Таблица уже существует»

Моя настройка была:

  1. Изменен механизм сервера с InnoDB на MyISAM
  2. Использование phpMyAdmin. Удалил базу данных, которую я пытался импортировать в
  3. Перезапустил службу mysql
  4. Попробовал реимпорт, и это сработало

У меня были огромные проблемы с ошибками 1050 и 150.

Проблема для меня заключалась в том, что я пытался добавить ограничение с ON DELETE SET NULL в качестве одного из условий.

Изменение на ON DELETE NO ACTION позволило мне добавить необходимые ограничения FK.

К сожалению, сообщения об ошибках MySql совершенно бесполезны, поэтому мне пришлось искать это решение многократно и с помощью ответов на вопрос выше.

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

Автоматизированное решение, которое сработало для меня, состоит в том, чтобы заменить обычную отбрасываемую таблицу этим sed во время дампа, чтобы также отбросить любые возможные представления:

Или, если вы предпочитаете печатать в файл для резервного копирования

Или, если вы получили дамп-файл и импортируете его в свою базу данных

Примечание: важно, чтобы вы добавляли ^ в начале регулярного выражения замены, потому что есть другие типы DROP TABLE IF EXISTS команды в дампах, которые вы не хотите трогать.

Comments

Copy link Quote reply

Moix1 commented May 23, 2018

I have following error while migrating the package will you please help with it ?

Error :
SQLSTATE[42S01]: Base table or view already exists: 1050 Table ‘users’ already exists (SQL: create table users ( id int unsigned not null auto_increment primary key, name varchar(255) not null, email varchar(255) not null, password varchar(255) not null, remember_token varchar(100) null, created_at timestamp null, updated_at timestamp null) default character set utf8mb4 collate ‘utf8mb4_unicode_ci

This comment has been minimized.

Copy link Quote reply

Far >May 24, 2018

Maybe php artisan migrate:fresh could help.

This comment has been minimized.

Copy link Quote reply

Moix1 commented May 24, 2018

=========This is Solution I Got ==========


[an error occurred while processing the directive]
Карта сайта