Jump to content

Recommended Posts

Добрый вечер, уважаемые форумчане. Возможно кто-то сталкивался с подобной проблемой и поможет в ее решении.

Суть проблемы такова, идентификатор attribute_id может содержать в себе от 8 до 18 символов. При записи и чтении из таблиц attribute_* проблем нет вообще. Но при попытке сохранения карточки товара, характеристики , которые имеют id от 10 символов не пишутся в product_attribute. Характеристики чьи id имеют 8-9 символов пишутся нормально.

Смена значения int или смена int на bigint не помогла. Возможно поскадите в чем может быть проблема?

Share this post


Link to post
Share on other sites

Возможно при записи в базу происходит (int)$attribute_id

Нужно смотреть модель attribute

 

Edited by ArtemFam

Share this post


Link to post
Share on other sites

нарастающий счетчик типа int ограничен числом 2147483647

https://dev.mysql.com/doc/refman/8.0/en/integer-types.html

 

21 минуту назад, okey сказал:

Суть проблемы такова, идентификатор attribute_id может содержать в себе от 8 до 18 символов

откуда у вас берутся 18 символов в инкрементном ЧИСЛОВОМ поле :?

Share this post


Link to post
Share on other sites
15 минут назад, ArtemFam сказал:

Возможно при записи в базу происходит (int)$attribute_id

да, и что?

Share this post


Link to post
Share on other sites
31 минуту назад, AlexDW сказал:

нарастающий счетчик типа int ограничен числом 2147483647

https://dev.mysql.com/doc/refman/8.0/en/integer-types.html

 

откуда у вас берутся 18 символов в инкрементном ЧИСЛОВОМ поле :?

Они подгружаются по API с поставщика и порезать я их не могу. Мне надо именно в том виде что есть. Это у них идентификаторы идут до 18 символов

Share this post


Link to post
Share on other sites

Я просто не могу именно въехать почему проблема становиться именно с product_attribute, потому что запись и чтение в таблицы атрибутов происходят нормально.

45 минут назад, ArtemFam сказал:

Возможно при записи в базу происходит (int)$attribute_id

Нужно смотреть модель attribute

 

Так там итак в модели int и значения тоже целые записуются.

Тут стала проблема с записью именно в это поле)

Share this post


Link to post
Share on other sites

Это плохая идея писать идентификаторы поставщика в attribute_id

Share this post


Link to post
Share on other sites
3 часа назад, okey сказал:

Но при попытке сохранения карточки товара, характеристики , которые имеют id от 10 символов не пишутся в product_attribute. Характеристики чьи id имеют 8-9 символов пишутся нормально.

Смена значения int или смена int на bigint не помогла. Возможно поскадите в чем может быть проблема?

 

тип поля в данной таблице ограничен количеством символов 11 - https://prnt.sc/p36g53

и это максимальное количество.

 

1 час назад, Yesvik сказал:

Это плохая идея писать идентификаторы поставщика в attribute_id

поддерживаю.

 

Если надо какая-то идентификация с поставщиком, то возможно лучше использовать дополнительную таблицу с комбинациями идентификаторов.

Share this post


Link to post
Share on other sites
33 минуты назад, vier сказал:

 

тип поля в данной таблице ограничен количеством символов 11 - https://prnt.sc/p36g53

и это максимальное количество.

 

поддерживаю.

 

Если надо какая-то идентификация с поставщиком, то возможно лучше использовать дополнительную таблицу с комбинациями идентификаторов.

Согласен, но почему то не пишет даже 10 символов. Хотя перевод таблиц attribute_* на bigint не вызывает подобной проблемы. Как и писал выше с данных таблиц я записываю и получаю все, о перевод product_attribute не дает такого самого эффекта. И в каком направлении даже копать понять к сожалению не могу(

Share this post


Link to post
Share on other sites

Отчасти проблема решается банальным substr и в целом вроде бы все работает. Но  тут суть не этом, суть в том почему всетаки я не могу загрузить значения именно в эту тамблицу в том виде, котором хочу. 

Share this post


Link to post
Share on other sites

Это исключительно вопрос намного опытным людям, чем я, поэтому и интересуюсь.

Share this post


Link to post
Share on other sites
11 часов назад, okey сказал:

Согласен, но почему то не пишет даже 10 символов. Хотя перевод таблиц attribute_* на bigint не вызывает подобной проблемы. Как и писал выше с данных таблиц я записываю и получаю все, о перевод product_attribute не дает такого самого эффекта. И в каком направлении даже копать понять к сожалению не могу(

 

PHP код выполняется на 32-х битной машине? Про unsigned тоже надо не забывать.

Edited by ArtemFam

Share this post


Link to post
Share on other sites
2 минуты назад, ArtemFam сказал:

 

Код выполняется на 32-х битной машине? Про unsigned тоже надо не забывать.

Да 32, у меня на локалке почему то 64 не запускается бд)

Share this post


Link to post
Share on other sites
14 часов назад, okey сказал:

Так там итак в модели int и значения тоже целые записуются.

Тут стала проблема с записью именно в это поле)

 

int в mysql и php запросто могут быть разного размера=)

Share this post


Link to post
Share on other sites
5 минут назад, okey сказал:

Да 32, у меня на локалке почему то 64 не запускается бд)

 

Как я понимаю. При записи php код на 32-х битной машине делает (int)$var тобишь обрезает значение до 4-х байт (32 бит), а затем отсылает в базу.

Кароче $var нужно писать в базу как string а не int=)

Edited by ArtemFam

Share this post


Link to post
Share on other sites
37 минут назад, ArtemFam сказал:

 

Как я понимаю. При записи php код на 32-х битной машине делает (int)$var тобишь обрезает значение до 4-х байт (32 бит), а затем отсылает в базу.

Кароче $var нужно писать в базу как string а не int=)

Огромное Вам человеческое спасибо, на 64 битных вообще такой проблемы не возникает.

Share this post


Link to post
Share on other sites

Я блин 3 дня продолбался с этой проблемой и так не понял на что грешить)

Share this post


Link to post
Share on other sites

Вопрос решен, тему можно закрывать, спасибо всем участвующим за советы.

Share this post


Link to post
Share on other sites
В 08.09.2019 в 20:05, okey сказал:

Вопрос решен, тему можно закрывать, спасибо всем участвующим за советы.

Как Вы решили этот вопрос ? 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.