SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 16.05.2020 15:52:50

Kagor
Участник
Зарегистрирован: 30.07.2019
Сообщений: 11

Как правильно прописать тип для id_region в таблице БД

Здравствуйте, подскажите пожалуйста - Есть таблица ,,регион,,  сразу написал структуру id_region - smallint(5), но в таком варианте принимала всего 65535 строк. Изменил - id_region - bigint(11) , записывает больше, но выбирает только из 65535 строк, далее пишет ошибку - ( [error] [client 127.0.0.1] File does not exist: _65535/param_f_spisok_1[1]=1770 )  Как решить правильно эту проблему ?

Неактивен

 

#2 16.05.2020 16:00:39

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2421

Re: Как правильно прописать тип для id_region в таблице БД

Бррр. Это mysql у Вас вообще?
Покажите структуру таблицы ( show create table t; ) где t - имя таблицы.

Как Вы туда записываете данные?
Что значит "выбирает только из 65535 строк"?
Далее пишет ошибку - кто пишет ошибку? Что за запрос и где запускаете?

В общем, дайте нормальное описание ситуации, а то телепатия никогда не была моей сильной стороной. ( с )


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#3 16.05.2020 17:13:09

Kagor
Участник
Зарегистрирован: 30.07.2019
Сообщений: 11

Re: Как правильно прописать тип для id_region в таблице БД

Работаю на Denwer ошибки читаю apache/logs/error.log 
Структура таблицы `region`-
CREATE TABLE IF NOT EXISTS `region` (
  `id_region` bigint(11) unsigned NOT NULL AUTO_INCREMENT,
  `parent_id` int(11) unsigned DEFAULT '0',
  `parent_glob` smallint(5) unsigned DEFAULT '0',
  `region` tinytext,
  `path` tinytext,
  `url` text,
  `rayon` tinyint(4) DEFAULT '0',
  `num` smallint(6) DEFAULT '0',
  PRIMARY KEY (`id_region`),
  KEY `parent_id` (`parent_id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 MAX_ROWS=1000000000 AVG_ROW_LENGTH=5000000
AUTO_INCREMENT=255859 ;

Если работаю с начальными регионами, проблем нет если переваливает за строки 65535 пишет ошибки -

Код:

//  Z:/home/site.7/www/catalog/prodam_kvartiru_114, referer: http://site.7/items/prodayu_2_komn_kvartiru_54_kv_m_142
[Sat May 16 16:22:25 2020] [error] [client 127.0.0.1] File does not exist: Z:/home/site.7/www/catalog/prodam_kvartiru_114, referer: http://site.7/catalog/prodam_kvartiru_114/_65535/
[Sat May 16 16:22:25 2020] [error] [client 127.0.0.1] File does not exist: Z:/home/site.7/www/catalog/prodam_kvartiru_114, referer: http://site.7/catalog/prodam_kvartiru_114/_65535/ ///

Отредактированно LazY (17.05.2020 23:03:58)

Неактивен

 

#4 16.05.2020 17:25:05

Kagor
Участник
Зарегистрирован: 30.07.2019
Сообщений: 11

Re: Как правильно прописать тип для id_region в таблице БД

Если сейчас меняю в id_region на smallint(5) выдает ошибку - \\ 1062
ER_DUP_ENTRY
Duplicate entry ‘%s’ for key %d
Дублированная запись “%s” для ключа %d  \\

Неактивен

 

#5 16.05.2020 22:49:15

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Как правильно прописать тип для id_region в таблице БД

Kagor написал:

Если работаю с начальными регионами, проблем нет если переваливает за строки 65535 пишет ошибки -

Код:

//  Z:/home/site.7/www/catalog/prodam_kvartiru_114, referer: http://site.7/items/prodayu_2_komn_kvartiru_54_kv_m_142
[Sat May 16 16:22:25 2020] [error] [client 127.0.0.1] File does not exist: Z:/home/site.7/www/catalog/prodam_kvartiru_114, referer: http://site.7/catalog/prodam_kvartiru_114/_65535/
[Sat May 16 16:22:25 2020] [error] [client 127.0.0.1] File does not exist: Z:/home/site.7/www/catalog/prodam_kvartiru_114, referer: http://site.7/catalog/prodam_kvartiru_114/_65535/ ///

Это не ошибки MySQL.
Ограничение в 65535 есть где-то в логике приложения.
Почему в имени файла присутствует _65535 ?

Неактивен

 

#6 17.05.2020 06:53:59

Kagor
Участник
Зарегистрирован: 30.07.2019
Сообщений: 11

Re: Как правильно прописать тип для id_region в таблице БД

Первоначально структура таблицы была так - `id_region`smallint(5) ,  `parent_id` smallint(5)  Таблица на каком то количестве строк перестала пополнять записи.   Я изменил структуру таблицы  так - `id_region` bigint(11) , `parent_id` int(11)  и продолжил вносить записи.  Похоже что пошло новое исчисление и в итоге сейчас выдает - \\Дублированная запись “%s” для ключа %d  \\   Я правильно понимаю ?

Неактивен

 

#7 17.05.2020 07:16:45

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Как правильно прописать тип для id_region в таблице БД

нет, на этом этапе всё было хорошо, но потом вы попробовали снова поменять id_region на smallint и начались проблемы.
чему сейчас равен AUTO_INCREMENT в выводе SHOW CREATE TABLE `region` ?

его нужно установить большим чем select max(id_region) from `region`;

ALTER TABLE `region` AUTO_INCREMENT = нужное_значение;

Неактивен

 

#8 17.05.2020 17:16:20

Kagor
Участник
Зарегистрирован: 30.07.2019
Сообщений: 11

Re: Как правильно прописать тип для id_region в таблице БД

Да нет, проблемы начались раньше - не работали ссылки на сайте, писало ошибку - нет такого файла, потому я стал пробовать поменять id_region на smallint.   Так просто эту проблему не решить, только очищать таблицу , и писать заново с `id_region` bigint(11) .

Неактивен

 

#9 17.05.2020 23:05:14

LazY
_cмельчак
MySQL Authorized Developer and DBA
Зарегистрирован: 02.04.2007
Сообщений: 849

Re: Как правильно прописать тип для id_region в таблице БД

Kagor, пожалуйста, размещайте фрагменты лога внутри [code]...[/code]

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson