LINUX.ORG.RU

Есть ли человек, который разбирается в MySQL?

 , , ,


0

1

Всем привет. Вообще никогда не работал с БД. Но тут пришлось и никак не могу понять в чем проблема. А состоит она в следующем: у меня есть скрипты *.sql, которые создают таблицы. Если я хочу повторно запустить эти скрипты с уже существующими таблицами, то все проходит гладко, кроме одной таблицы с которой возникает ошибка:

Table './db_name/table_name' is marked as crashed and last (automatic?) repair failed
причем эта таблица только одна, пустая и создается следующим образом:
CREATE TABLE IF NOT EXISTS `table_name` (
    `field1`  INT unsigned NOT NULL,
    `field2`  INT unsigned NOT NULL,
    `field3` INT unsigned NOT NULL,
    `field4`  INT unsigned NOT NULL,
    `field5`  INT unsigned default '11',
    `field6`  TINYINT unsigned,
    `field7` TINYINT UNSIGNED,
    `field8`  BIGINT,
    `field9`  INT unsigned,
    `field10`  INT unsigned,
    `field11`  TINYINT unsigned,
    `field12` TINYINT UNSIGNED,
    `field13`  BIGINT,
    `field14`  INT unsigned,
    KEY `field1_field2` (`field1`,`field2`),
    KEY `field1_field3`(`field1`,`field3`),
    UNIQUE KEY `field1_field4` (`field1`,`field4`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='table comment';
LOCK TABLES `table_name` WRITE;
alter table table_name add column field9 INT unsigned after field8;
alter table table_name add column field14 INT unsigned after field13;
alter table table_name modify column field5 int(10) unsigned default '11';
alter table table_name add unique key `field1_field4` (`field1`,`field4`);
-- table has no initial data
UNLOCK TABLES;
OPTIMIZE TABLE `table_name`;

Кто-нибудь знает в чем может быть проблема?

Он говорит что такая таблица уже есть, но она сломана и её невозможно починить. Если она не нужна, просто дропни её

xorik ★★★★★
()
Ответ на: комментарий от xorik

так, и другие таблицы тоже есть. Почему на другие не ругается? Мне в теории нужно добиться следующего: если таблица есть, то не трогать ее, а, если нет, то добавить. Что-то вроде апдейта БД.

igormat
() автор топика
Ответ на: комментарий от igormat

а другие таблицы тоже сломаны типа? тебе английским по черному написано, что тебе кто-то постоянно ломает эту таблицу, в которую ты пытаешься что-то добавить. либо найди этого кого-то и надавай ему по яйцам, либо пытайся сделать repair вручную.

anonymous
()

и что за мудацкий запрос? нахера ты сначала создаешь, а потом делаешь alter?

anonymous
()
Ответ на: комментарий от anonymous

Другие таблицы все норм. Ребут мог поломать таблицу?

igormat
() автор топика
Ответ на: комментарий от anonymous

Миграция в смысле перенос БД в другую директорию?

igormat
() автор топика
Ответ на: комментарий от igormat

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

anonymous
()
Ответ на: комментарий от igormat

если таблица есть, то не трогать ее, а, если нет, то добавить. Что-то вроде апдейта БД

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

anonymous
()
Ответ на: комментарий от igormat

тебе нужна пустая таблица? дропай существующую и оставляй только create. нужно сохранить данные - заморачивайся с IF в ALTER TABLE - в мускуле это не очень тривиально. хочешь показаться нормальным человеком - шли нахер тех, кто от тебя требует ранать скрипты на таблице, о состоянии которой никому не известно.

anonymous
()

ENGINE=MyISAM

Может всё же лучше InnoDB, если всё время крашется?

Radjah ★★★★★
()

Есть ли человек, который разбирается в MySQL?

Очевидно есть. Как минимум тот, кто его разработал.

А ты с какой целью интересуешься? Тоже собрался разбираться? Может свое уже что запили в этой жизни? Разработай систему, и живи по ней. Что бы все четко как на карте. И с росписью на техзадании. Мол предупрежден, осведомлен, и прочее.

Csandriel
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.