IPB


Бесплатные VPN сервера

Здравствуйте, гость ( Вход | Регистрация )

 
Тема закрытаНачать новую тему
MySQL и таблица с триггером, Наверно, дело в триггере
inst
сообщение 13.9.2010, 17:19
Сообщение #1


Студент
****

Группа: Пользователи
Сообщений: 188
Регистрация: 2.8.2008
Пользователь №: 188



Здравствуйте!

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

MySQL в ответ на все попытки возвращает (что в движок сайта, что в PHPMyAdmin) примерно такое:
Код
#1436 - Thread stack overrun: 8072 bytes used of a 131072 byte stack, and 128000 bytes needed. Use 'mysqld -O thread_stack=#' to specify a bigger stack.


Судя по сообщению (переполнение стека) - дело явно в конфигурации сервера. Гляньте, пожалуйста...

PS. Чтоб сразу отсеять все ненужные вопросы: установленная на srv1 ветка мускула поддерживает триггеры, созданные простыми пользователями (не админами БД) около двух лет.


--------------------
|
Перейти в начало страницы
 
+Цитировать сообщение
Горбушка
сообщение 13.9.2010, 18:07
Сообщение #2


Ректор
**********

Группа: Пользователи
Сообщений: 8994
Регистрация: 3.3.2008
Из: Москва/Россия
Пользователь №: 42
Домен: m-v-l.org


Передал администраторам, однако, предполагаю, что просто таблица посыпалась - нужно восстановление... Хотя я не знаю MySQL на таком уровне...

Если есть возможность - выложи сам SQL-запрос...


--------------------
Мы - анононим. Имя нам - Легион. Мы не прощаем. Мы не забываем. Ждите нас.
Перейти в начало страницы
 
+Цитировать сообщение
inst
сообщение 13.9.2010, 18:30
Сообщение #3


Студент
****

Группа: Пользователи
Сообщений: 188
Регистрация: 2.8.2008
Пользователь №: 188



Пардон, не догадался сразу указать запрос.

Насчёт «посыпалась» - не думаю. Я только-только переехал на этот сервер, базу данных только начал заполнять (пока ещё тестовые данные). Пробовал пересоздавать всю БД - результат тот же. Именно эта таблица глючит. Разве что посыпалась вся СУБД, но я думаю, что это не так.

Насчёт SQL-запроса: ошибка при обыкновенном INSERT'е. Самом-самом обыкновенном.
Ниже прилагаю упрощённую модель моей БД. Только что проверил, ошибка повторилась:
CODE
BEGIN;

CREATE TABLE pages_test (
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
address VARCHAR ( 128 ) NOT NULL DEFAULT '/',
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE = InnoDB;

CREATE TABLE comments_test (
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
page_id BIGINT UNSIGNED NOT NULL DEFAULT 1,
delete_hash VARCHAR( 12 ) NOT NULL,
created_at DATETIME NOT NULL,
FOREIGN KEY ( page_id ) REFERENCES pages_test( id ) ON UPDATE CASCADE ON DELETE CASCADE
) ENGINE = InnoDB;

CREATE TRIGGER comments_test_insert BEFORE INSERT ON comments_test FOR EACH ROW
SET NEW.created_at = NOW(), NEW.delete_hash = ( SELECT SUBSTRING( MD5( RAND() ) FROM 1 FOR 12 ) );

INSERT INTO pages_test ( id ) VALUES ( 1 );
INSERT INTO pages_test ( address ) VALUES ( '/index2' );

COMMIT;

-- Проблема проявляется далее:
INSERT INTO comments_test ( page_id ) VALUE ( 1 );


--------------------
|
Перейти в начало страницы
 
+Цитировать сообщение
inst
сообщение 15.9.2010, 16:03
Сообщение #4


Студент
****

Группа: Пользователи
Сообщений: 188
Регистрация: 2.8.2008
Пользователь №: 188



Ну так что там? Ребят, увеличьте уже на 10 см стек, а? Ну, пожалуйста. Там же даже команда в ошибке указана.

Или может можно я тогда PostgreSQL буду использовать? Я попробовал, у меня БД из ISP создалась и всё вроде бы функционирует, но, тогда мне нужен phpPgAdmin... Иначе трудно.


--------------------
|
Перейти в начало страницы
 
+Цитировать сообщение

Тема закрытаНачать новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



RSS Текстовая версия Сейчас: 22.8.2019, 16:13