Table of Contents
За последние несколько дней отдельные пользователи сообщали нам, что они получили ошибку триггера mysql 1235.
Одобрено
ж.Эта ошибка означает, что у вас уже есть превосходный триггер AFTER INSERT для таблицы компиляции. DROP TRIGGER vipInvite; DELIMITER $$ CREATE TRIGGER vipInvite END $$ DELIMITER; Теперь, если у вас есть другая цель, вам нужно объединить один код из двух триггеров сразу в один, затем удалить существующий запуск, а затем создать новый обширный.
грамм.<раздел><статья>
цифровой
На днях я подключился на несколько часов, пока не возникла проблема с процессом. Я уже много лет использую SQL Server без требований к серверу, но запуск MySQL часто вызывает сомнения.
Вчера, пытаясь восстановить базу данных, я выдал ошибку 1235:
ОШИБКА 1235 (42000) в строке 1408: эта опция MySQL по-прежнему не устраняет «несколько триггеров с одним действием, слишком много времени и событий для этой конкретной таблицы»
Я искал в Google около часа и пришел к выводу, что эта ошибка в конечном результате может появиться в том случае, если есть несколько причин. Я также объясняю эти причины для ответов ниже.
Созданный всеми, когда дело доходит до первого места, я предлагаю покупателям получить новый список всех триггеров, выполнив следующие инструкции:
SELECT trigger_schema, trigger_nameИЗ information_schema.triggersГДЕ trigger_schema = 'ИМЯ_OF_YOUR_DATABASE';
Причина №1: нельзя комбинировать BEFORE / AFTER с INSERT / UPDATE / DELETE
В этом файле PDF, записанном вручную, описывается проблема. Проблема, скорее всего, будет описана как простая: BEFORE_INSERT не может также иметь AFTER_INSERT на невероятной таблице. Возможно, вы обновили его порядок ДО вставки, а затем обновили другие типы таблиц вставки с идентификатором. Я предлагаю вам что-то изменить по этой причине (возможно, ДО того, как вы произнесете триггер) относительно вашего кода.
Только причина №: AFTER_DELETE иногда с ошибкой 1235
Необходимо использовать триггеры AFTER_DELETE. Переключение на триггер BEFORE_DELETE помогает понять, когда большинство людей используют переменную OLD. Я понятия не имею, почему это может произойти, это может быть моя конкретная версия MySQL.
Причина 3: у вас не может быть одинаковых зарядов (двойные триггеры)
Иногда, чтобы получить пример, в процессе вы получаете фактически другой код ошибки, но иногда идеальный человек получает ту же ошибку 1235 без необходимости объяснения причин. Пройдите через обсуждение вышеупомянутых триггеров шоу вместе с поиском триггеров с вышеупомянутым именем. Всегда запускайте TRIGGER перед созданием / изменением триггера.
Причина №4: вы не можете ссылаться на ОДНУ ТАБЛИЦУ, которую вы обычно обновляете, вставьте в триггер
Например, если вы хотите разместить свой собственный пароль пользователя по умолчанию, основанный на триггере, при создании значительно большего количества пользовательских записей, вы можете попробовать каждое из следующих действий: UPDATE users SET пароль приравнивается к «newPassword»;
Правильный способ сделать это – установить переменную в триггере BEFORE_INSERT. Пример: УСТАНОВИТЬ НОВУЮ. = Пароль «newPassword»;
Причина №5: при экспорте хорошей базы данных (в виде сценария SQL) вы и ваша семья можете получить определения веб-сайтов в хорошем надежном сценарии
Другими словами, в случае, когда вы экспортируете путь времени базы данных MySQL в файл .file, допустимый ручной файл может содержать такие вещи, как TRIGGER “mydbname” или “trigger_name”. Поэтому, если окажется, что вы попытаетесь снова поместить его в базу данных с другим именем, это не удастся. Мне казалось, что я ожидал различных системных ошибок, потому что некоторая база данных НЕ указывает в настоящее время на базу данных, которую я действительно хочу восстановить. В любом случае, вы также получите здесь ошибку 1235.
Краткое решение: откройте файл .sql и измените все ссылки на EXPORTED_DB_NAME. игнорирование большей части строки (т.е. замена, ничего не имея).
Resume / TL; ДР:
Отсутствие использования BEFORE / UPDATE может привести к тому, что та же функция (например, INSERT) будет сохранена в той же таблице. Никогда не используйте триггеры AFTER_DELETE, в качестве альтернативы используйте before_delete. Избегайте создания повторяющихся имен. Не ссылайтесь на ту же таблицу семейства, которую вы обновляете или вставляете, особенно там, где вы используете триггер, OLD в дополнение к NEW, а вместо этого используйте SET для подзапроса. При восстановлении базы данных из аварийной ситуации явное имя пользователя каталога упоминается в платеже, и это также не включает резервную копию (в случае восстановления на другое имя хранилища).
Помните: с этими триггерами create INSERT вы обычно можете использовать одну NEW переменную, с точным триггером create UPDATE, который вы можете поместить в OLD с помощью NEW, а в его объявлении DELETE вы может указывать только на один на СТАРОМ.
- Теги:
- 1235
- once
- after_delete
- before
- смесь
- база данных
- установить
- ошибка
- mysql
- ссылка ,
- перестроить
- та же таблица
- варианты обработки
,
,
,
,
,
,
,
,
,
,
,