1 (изменено: wboraw, 2008-10-01 00:23:51)

Тема: Проблема с добавкой новых записей в таблицу

Сегодня я столкнулся с проблемой добавления новых записей.

Когда я просто добавлю новую запись в таблицу, все отлично работает.
Но когда я удаляю из таблице НЕ ПОСЛЕДНЕЮ запись а любую другую, и затем добавляю новую запись, то эта новая запись встает вместо удаленной.

Во все своих таблицах создаю ПЕРВОЕ поле “id” (“int”,” auto_increment”,”первичный ключ ”).
К примеру есть таблица с двумя полями “id”,”freetext”  (тип поля ”freetext” ‘text’).

http://pic.ipicture.ru/uploads/081001/47RWT1P71R.jpg

http://pic.ipicture.ru/uploads/081001/S4jjUW61DB.jpg

http://pic.ipicture.ru/uploads/081001/2V35fRSTth.jpg

2

Re: Проблема с добавкой новых записей в таблицу

wboraw
Это особенность работы MySQL. Запрос без задания сортировки, выводит данные в той очередности, в которой они находятся в файлах таблицы. MySQL может легко заместить старые данные новыми внутри файла, в любом его месте, как записав их в конец, так и в середину.

3

Re: Проблема с добавкой новых записей в таблицу

Hanut
А можно сделать так чтобы новые записи добавлялись всегда  только в конец таблице?
Как то совсем не хочется во всех запросах где нет сортировки писать “ORDER BY”

4

Re: Проблема с добавкой новых записей в таблицу

wboraw
Нет, для MyISAM и большинства других типов таблиц, нельзя. ORDER BY надо писать всегда и везде, к тому же в документации MySQL это прописано.

Можно создать таблицы типа InnoDB, которые всегда выводят данные в соответствии с первичным или уникальным ключом, но и в этом случае крайне советую писать ORDER BY.

5

Re: Проблема с добавкой новых записей в таблицу

Hanut
Спасибо но у меня с списке “тип таблицы” есть только:
“MyISAM”
”Heap”
”Merge”

http://pic.ipicture.ru/uploads/081001/5sUkPVEb0M.jpg

У меня - phpMyAdmin 2.6.1

6

Re: Проблема с добавкой новых записей в таблицу

wboraw
InnoDB включен в MySQL 4.0 и выше.
Для подключения InnoDB в MySQL от 3.23 до 4.0, необходимо в my.ini/my.cnf, в раздел mysqld прописать хотя бы данную строку:

innodb_data_file_path=ibdata1:10M

Желательно и остальные директивы настроить, но это вы сами.