Задавайте вопросы, мы ответим
Вы не зашли.
Итаг товарисчи, решил отказаться от InnoDB в пользу MyISAM. Но чтобы не загромождать скрипты лишними запросами, решил использовать триггеры. Работаю на 3х системах. 2 локальных компа с разной виндой, но с одинаковым сервером БД + хост на Fedora.
Итаг, на локальном компе создал несколько триггеров, усё прошло гладко, скопировал файлы данных БД на другой локальный комп - работать не захотело. Удалил файлы триггеров, создал триггеры вручную с помощью SQL - не работают. Такое ощущение, что их нет, но вроде есть, заново не создаются, система ругается. Что интересно, заметил разницу. На первом компе в файлах данных БД были созданы файлы с расширением TRN, содержащий ссылку на таблицу, к которой привязан триггер, но на втором компе такие файлы не создались. Почему - не знаю. Возможно, причина в этом? Но сами сервера БД одни и те же - с одного компа сливал на другой, все настройки те же.
Вопрос номер два Проверил как это всё работает на хосте. Собссно хост и есть конечное место "жительства" данной системы. Там вообще получил матюк: #1436 - Thread stack overrun: 5032 bytes used of a 131072 byte stack, and 131072 bytes needed. Use 'mysqld -O thread_stack=#' to specify a bigger stack. Не совсем понимаю куда ткнуть носом хостера и можно ли вообще
Неактивен
Триггеры хранятся в специальной табличке в базе mysql, поэтому при бинарном копировании файликов они
не копируются. И Вы ничего не сказали про версию на федоре, она такая же?
Неактивен
Но я ведь потом запросами заново создал все триггеры, но их активности не наблюдалось при их наличии
На Федоре сервер другой, но тоже не старый - 5.0.77. На локалках стоит 5.0.6-beta.
Неактивен
Поставьте 5.0.77 или копируйте данные через текстовые дампы. Никто не гарантирует, что
а) если у Вас и правда столь старая версия, как 5.0.6, что она хоть сколь нибудь стабильна
б) если у Вас бета 5.1+, то обратной бинарной совместимости тоже, скорее всего, нет.
Неактивен
По файлам с расширением TRN мысли есть? Ведь на одном из серверов 5.0.6 всё работало так, как было задумано.
Отредактированно Neval (14.05.2009 22:54:38)
Неактивен
TRN == trigger names
TRG == trigger definitions
Что Вас в них не устраивает? Все работало так, как было задумано, на том сервере, на котором
Вы создавали базы и триггеры через MySQL, а не через копирование.
Неактивен
Меня не устраивает то, что при ручном создании триггеров, эти файлы не создались
Neval написал:
Удалил файлы триггеров, создал триггеры вручную с помощью SQL - не работают. На первом компе в файлах данных БД были созданы файлы с расширением TRN, содержащий ссылку на таблицу, к которой привязан триггер, но на втором компе такие файлы не создались. Почему - не знаю. Возможно, причина в этом?
Неактивен
Не стоит полагаться на нижележащую структуру файлов. Их всегда могут поменять без Вашего
ведома. Пользуйтесь открытыми интерфейсами, и проблем не будет.
Если Вы создали триггер командой, и он создался, но не появился файлик — то это в порядке
вещей. Триггер то создался. Как он хранится в базе — это дело СУБД. От версии к версии меняется.
Вот если бы триггер не создался при этом, тогда надо было бы идти и описывать багу
Неактивен
Дык триггер-то создался (дампом), существовал, но не работал Ладно, буду экспериментировать.
Неактивен
А Вы уверены, что он создался дампом? Это надо было дамп с ключом --triggers запускать...
Неактивен
Эээээ... имел ввиду, что создавал его SQL командой. В том-то и дело, повторный запуск команды создания триггера ответил "триггер уже существует". Собственно дроп триггера также без проблем сработал, но это уже было позже)) Не подумайте, что я дропнул его, а потом тестил всё))
Неактивен