Где "режет" ID записи при отправке комментария?

ЕСТЬ РЕШЕНИЕ ЗАКРЫТО
#1 22 ноября 2013 в 23:10
работает отправка комментария и запись в БД только есть длина id не более 11 знаков, иначе записывает в базу какой то "левый" id записи.

p.s. ячейку в БД отредактировал расширив значение с 11 до 20 знаков (так как id записи у меня может быть до 20 знаков)

где режется значение отправляемого id записи?
#2 22 ноября 2013 в 23:12
А сменить тип поля не пробовали на бигинт, а не просто длину увеличивать?
#3 22 ноября 2013 в 23:51

на бигинт

lokanaft
бигинт установлено.

странно записывается.
Если id Записи 314654153 — то так и записывается (в этом случае все нормально работает)
а если id Записи 32165131651351351 — то записывается 2147483647

т.е. это даже не отбрезанное длинное число, а всегда именно 2147483647

p.s. тут я и подумал может какой фильтр в инстанте не дает длинному id пройти?
#4 23 ноября 2013 в 00:07
К тому же оказывается что

2147483647 (231-1), число Мерсенна — максимально возможное значение для 32-битного целого числа со знаком, то есть самое большое целое число, которое можно записать в 32 бита.


Значит должно быть не bigint в этом столбце… а как? чтобы не навредить работе остального в инстанте?

Даже если заменить bigint на text или varchar — Записывается все равно так же.
Прошу прощения за мой француский. Не оч силен в матчасти.
#5 23 ноября 2013 в 00:50
kreator, почитайте!
У вас для поля id указан тип INT(11), замените его на тип BIGINT, без указания количества символов.
#6 23 ноября 2013 в 06:44
там еще в компоненте комментариев, в нескольких местах, отправляемые данные значатся как int. может и там что ограничивает? просто поставить bigint не помогает
#7 23 ноября 2013 в 08:10
kreator, Вы можете подробнее описать. Что именно не получается? Что и как делали, подробно и пошагово? А то прям клещами нужно вытягивать. Что и как вам объяснили, другого толкования не вижу. Тут налицо уже проблема кривых рук. Поэтому давайте разбираться.
1. На бигинт изменили? Где и как?
2. Что записывается в БД?

так как id записи у меня может быть до 20 знаков

kreator
Почему? Комментов очень много? Дело в том, что поле id — поле с автоинкрементом, т. е.любое значение и как попало туда не занесешь, только по порядку.
BIGINT может содержать цифру из 19 знаков, один бит для хранения знака(плюс или минус). Можно увеличить диапазон до 20 знаков, если указать UNSIGNED.
Ещё одно, ваше требование уже кажется подозрительным. Потому что тип INT, как мы уже видели, может хранить число до 2147483647. Это два с лишним миллиарда(это очень много). ID начинается с 1 и каждый новый комментарий может увеличивать id на один. Поэтому, чтобы исчерпать лимит в течении 10 лет, нужно каждый день писать примерно по 500 тыс. комментов. Или я чего не понимаю?
#8 23 ноября 2013 в 11:41
Марат, некоторые хостеры (sweb) умудряются перенастраивать автоинкремент например на 10 и объясняют это повышением быстродействие laugh
#9 23 ноября 2013 в 13:44
прошу прощения. это не id с автоикриментом. это target_id записи. если число не более 10 знаков то все записывается норм. если больше то режет.
#10 23 ноября 2013 в 18:14
а вот:
  1. $target_id = cmsCore::request('target_id', 'int', 0);
эта строчка в файле addform.php и в других файлах компонента "Комментарии" может влиять на данные?
там что-то проходит как str а target_id как int
#11 23 ноября 2013 в 22:30
так и было.
в компоненте комментариев сменит int на str, там где предназначалось для target_id и все заработало
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.