00:45 

MySQL

Я понимаю, что чего-то не понимаю. Есть база, предположим, что библиотека. Соотв есть три таблицы:
1) Книги: id (автоинкремент) | автор|название|издательство| год издания
2) читатели id(! автоинкремент) | фио| телефон
3) ну, предположим, учет ну, тут сборные данные. по айди связка

Я, предположим, пытаюсь добавить строку в читателей:
INSERT INTO chitately(fio, phone)
VALUES('блабла','123456789')
На что получаю ошибку:
#1467 - Failed to read auto-increment value from storage engine

при добавлении новой строки в книгах все ок.

Вопрос: пока я не исправила в читателях id на id_chit он упорно выдавал ошибку. Почему? Не может быть в одной БД две таблицы с одинаковыми названиями столбцов? Я только разбираю MySQL, заранее извините за нубские вопросы.
При том, что когда я была не за своим ноутом, а делали мы все это на рабочих компах, все было ок. Не могло же меня переклинить?

@темы: MySQL, Вопросы

Комментарии
2013-12-26 в 00:55 

debugger
добрый биоробот
А create-код таблиц приведите?

2013-12-26 в 00:57 

Тестово. На денвере с помощью phpMyAdmin через интерфейс.

2013-12-26 в 01:00 

debugger
добрый биоробот
mishamigos,
и тем не менее, там можно сделать экспорт таблицы или всей базы и посмотреть, какой код генерируется, а в зависимости от версии phpmyadmin можно и create-код где-то отдельно найти.

2013-12-26 в 01:07 

- Структура таблицы `books`
--

CREATE TABLE IF NOT EXISTS `books` (
`id` smallint(6) NOT NULL AUTO_INCREMENT,
`nazv` varchar(255) COLLATE cp1251_general_cs NOT NULL,
`author` varchar(255) COLLATE cp1251_general_cs NOT NULL,
`god_izd` year(4) NOT NULL,
`izdat` varchar(255) COLLATE cp1251_general_cs NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=cp1251 COLLATE=cp1251_general_cs AUTO_INCREMENT=7 ;

--
--
-- Структура таблицы `chitately`
--

CREATE TABLE IF NOT EXISTS `chitately` (
`id_chit` smallint(6) NOT NULL AUTO_INCREMENT,
`fio` varchar(255) COLLATE cp1251_general_cs NOT NULL,
`phone` varchar(255) COLLATE cp1251_general_cs NOT NULL,
PRIMARY KEY (`id_chit`)
) ENGINE=InnoDB DEFAULT CHARSET=cp1251 COLLATE=cp1251_general_cs AUTO_INCREMENT=8 ;

--

2013-12-26 в 01:11 

alhames
alhames.ru
Не может быть в одной БД две таблицы с одинаковыми названиями столбцов?
Может.

Не известно последние значение инкремента. Посмотрите в свойствах таблицы. Попробуйте проставить вручную..

2013-12-26 в 01:15 

alhames
alhames.ru
mishamigos, а если поменять назад:

CREATE TABLE IF NOT EXISTS `chitately` (
`id` smallint(6) NOT NULL AUTO_INCREMENT,
`fio` varchar(255) COLLATE cp1251_general_cs NOT NULL,
`phone` varchar(255) COLLATE cp1251_general_cs NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=cp1251 COLLATE=cp1251_general_cs AUTO_INCREMENT=8;

Ошибка останется?

2013-12-26 в 01:16 

alhames, всеее. поняла где косячила. Спасибо *_*

2013-12-26 в 01:17 

alhames, я до этого, своими "прямыми" руками делала запрос на вставку строки, где значение id приняло значение NULL. вот и получился косяк.

2013-12-26 в 01:51 

alhames
alhames.ru
Вот и замечательно :)

   

Сообщество PHP программистов

главная