Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: UNIQUE + COUNT = любовь!
 
 автор: Loki   (04.05.2006 в 16:39)   письмо автору
 
 

Есть у меня табличка:

CREATE TABLE 'creator' (
  'file_id' int(11) NOT NULL auto_increment,
  'project_id' int(11) NOT NULL default '0',
  'file_name' tinytext NOT NULL,
  'file_data' longtext NOT NULL,
  'file_comment' text NOT NULL,
  'change_date' datetime NOT NULL default '0000-00-00 00:00:00',
  'user' tinytext,
  'pumpkin_id' tinytext,
  PRIMARY KEY  ('file_id'),
  UNIQUE KEY 'project_id' ('project_id','file_name'(255))
) TYPE=MyISAM

запрос

SELECT count( * ) FROM 'creator' WHERE project_id =1

выводил количесво файлов в проекте (для постраничной навигации)
После обновления MySQL до версии 4.1.14, этот же запрос начал выводить результат 2, вместо 70. При удалении уникального индекса, или при исправлении запроса

SELECT count(имя поля) FROM 'creator' WHERE project_id =1

все начинает работать нормально.
Что это за шутки? Криво собранный сервер? Какие-то подводные камни с индексами? Просто глюк?
Короче, хочется понять. Так как подобная конструкция (за исключением уникального индекса на два поля) используется достаточно часто.

   
 
 автор: cheops   (04.05.2006 в 20:57)   письмо автору
 
   для: Loki   (04.05.2006 в 16:39)
 

Не должно быть такой белиберды... ничего хитрого в my.cnf или my.ini не прописано? Может включён какой-нибудь SQL-режим? Попробуйте по таблице пройтись оператором OPTIMIZE TABLE - он перестоит индекс таблицы - скорее всего порушился файл индекса в результате перехода на новую версию MySQL.

   
 
 автор: Loki   (04.05.2006 в 22:38)   письмо автору
 
   для: cheops   (04.05.2006 в 20:57)
 

ну индекс я пересоздавал несколько раз... будем искать...

   
 
 автор: Loki   (05.05.2006 в 09:46)   письмо автору
 
   для: cheops   (04.05.2006 в 20:57)
 

Все попробовал... результат повторяемый. Создал даже простейшую таблицу:

CREATE TABLE 'creator' (
  'file_id' int(11) NOT NULL auto_increment,
  'project_id' int(11) NOT NULL default '0',
  'file_name' tinytext NOT NULL,
  'file_data' longtext NOT NULL,
  'file_comment' text NOT NULL,
  'change_date' datetime NOT NULL default '0000-00-00 00:00:00',
  'user' tinytext,
  'pumpkin_id' tinytext,
  PRIMARY KEY  ('file_id'),
  UNIQUE KEY 'project_id' ('project_id','file_name'(255))
) TYPE=MyISAM AUTO_INCREMENT=6 ;

-- 
-- Дамп данных таблицы 'creator'
-- 

INSERT INTO 'creator' VALUES (1, 1, 'test', 'test', 'test', '0000-00-00 00:00:00', NULL, NULL);
INSERT INTO 'creator' VALUES (2, 1, 'тест1', 'тест1', 'тест1', '0000-00-00 00:00:00', NULL, NULL);
INSERT INTO 'creator' VALUES (3, 1, 'тест2', 'тест1', '', '0000-00-00 00:00:00', NULL, NULL);
INSERT INTO 'creator' VALUES (4, 1, 'тест3', 'тест1', 'тест1', '0000-00-00 00:00:00', NULL, NULL);
INSERT INTO 'creator' VALUES (5, 1, 'тест4', 'тест1', '', '0000-00-00 00:00:00', NULL, NULL);

И тут результат тот же... значит дело не в побитости индексов.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования