<rmcreative>

RSS

Все заметки с тегом «InnoDB»

Можно уточнить:

    (1)
    (1)
    (1)
  1. (3)
  1. И ещё раз про невнятные ошибки MySQL

    18 апреля 2012

    Снова наткнулся на совсем-совсем невнятные ошибки MySQL. Всё больше убеждаюсь, что о людях при написании данной его части никто не думал.

    ALTER TABLE `post` DROP FOREIGN KEY `FK_Post_UserID`

    В результате получаем:

    SQLSTATE[HY000]: General error: 1025 Error on rename of './mydb/post' to './mydb/#sql2-11a-1f2c' (errno: 152)
    

    Очень помогло…

    Оказывается, нормальую информацию, получить всё-таки можно. Правда, через одно место:

    SHOW ENGINE INNODB STATUS

    отдаст нам кучу всего, в том числе:

    LATEST FOREIGN KEY ERROR
    ------------------------
    120418 16:58:22 Error IN dropping of a FOREIGN KEY CONSTRAINT of TABLE "mydb"."post",
    IN SQL command
    ALTER TABLE `post` DROP FOREIGN KEY `FK_Post_UserID`
    Cannot find a CONSTRAINT WITH the given id "FK_Post_UserID".
    

    Вот это уже намного понятней. У нас просто нет FK с таким именем. Интересно, чем руководствовались разработчики MySQL, скрывая от конечного пользователя действительно важную для него информацию?

    7 комментариев
  2. MySQL, InnoDB и внешние ключи

    14 мая 2010

    Довольно часто при попытке создать внешний ключ MySQL вываливает невнятные errno: xxx. Их описания в большинстве случаев ничего не дают, даже запутывают ещё больше.

    Реальных причин может быть несколько:

    1. Тип таблицы, на которую указывает ключ не InnoDB, SolidDB или PBXT.

    2. С одной из сторон ключа нет индекса (да, создавать его надо руками).

    3. С одной из сторон ключа нет столбца с указанными именем.

    4. Неверное описание отношения, например ON DELETE SET NULL для столбца NOT NULL.

    5. Ограничение с таким именем уже есть.

    6. Несовпадение типов полей, связываемых отношением. Например, нельзя использовать с одной стороны int(10) unsigned, а с другой int(11) или bigint.

    7. Нарушение целостности данных (integrity violation), т.е. когда ссылающийся id прописан, а в связываемой таблице его нет.

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

    2 комментария
  3. Нужно ли переходить с MyISAM на InnoDB?

    15 марта 2009

    Чётко и понятно о плюсах и минусах MyISAM и InnoDB.

    Peter из компании Percona в переводе Владимира.

    Читаем

    3 комментария