কেন অ্যাট্রিবিউট কোড সর্বাধিক দৈর্ঘ্য আছে?


9

অ্যাট্রিবিউটগুলি তৈরি করার চেষ্টা করার সময়, আমি আবিষ্কার করেছি যে কোনও অ্যাট্রিবিউট কোডের সর্বাধিক দৈর্ঘ্য 30 টি অক্ষর। যদিও দেখা যাচ্ছে যে এটি আসলে কোনও ধরণের বাস্তব সীমাবদ্ধতা নয় - এটি একটি সম্পূর্ণ স্বেচ্ছাচারিত মান, এটি দ্বারা সংজ্ঞায়িত

Mage_Eav_Model_Entity_Attribute::ATTRIBUTE_CODE_MAX_LENGTH.

সুতরাং যে দেওয়া কেন, এখানে কেন কোনও নিষেধাজ্ঞা আছে? এবং কেন ডিফল্ট 30, উদাহরণস্বরূপ 255 এর চেয়ে বেশি, যা ডাটাবেস কলামের আসল সীমা?

পুনশ্চ. যদি কেউ এই প্রশ্নের জন্য আরও ভাল ট্যাগ সম্পর্কে ভাবতে পারেন তবে দয়া করে সেগুলি আপডেট করুন।

উত্তর:


8

এটি প্রায় অবশ্যই অ্যারাকল সমর্থন যোগ করার 1.6 অংশে পরিবর্তিত হয়েছিল - ওরাকল-এ, কলামগুলি কেবল 30 টি অক্ষর দীর্ঘ হতে পারে, তাই প্রচুর ম্যাজেন্টো বৈশিষ্ট্য সংক্ষিপ্ত হয়ে যায় এবং আমি ধারণা করি একই সময়ে এই বিধিনিষেধটি যুক্ত হয়েছিল।

এ বিষয়ে অনেক আলোচনার জন্য http://m-chanaan.hr/wp-content/uploads/2013/04/RDBMS_Guide2.pdf দেখুন ।


1
এই. আমি সবেমাত্র কিছু পুরানো 1.5 বিটা কোড ঘাঁটি ঘুরে দেখলাম এবং ATTRIBUTE_CODE_MAX_LENGTHধ্রুবকটির অস্তিত্ব নেই।
অ্যালান ঝড়

6

দল বা স্বতন্ত্র বিকাশকারীদের একে অপরের সাথে কথা না বলার একটি নিখুঁত উদাহরণ। মূল eav_attributeটেবিলটি atrtibute_codeহ'ল varchar(255)এই কোড মানটি অন্যান্য টেবিলগুলিতে প্রায়শই ব্যবহৃত হয়।

ইন catalog_product_link_attributeএকটি এর product_link_attribute_codeঅ্যাট্রিবিউট (যা অ্যাট্রিবিউট কোড), এবং এই কলামটি একটি হল varchar(32)। প্রাগৈতিহাসিক সময়ে যখন বিক্রয় বিষয়গুলি EAV অবজেক্ট ছিল, তখন তাদের একটি বৈশিষ্ট্য_কোড কলাম ছিল যার varchar(50)দৈর্ঘ্য ছিল।

# Mage/Sales/sql/sales_setup/mysql4-upgrade-0.9.45-0.9.46.php
$installer->getConnection()->addColumn($this->getTable('sales_order'), $attribute['attribute_code'], 'varchar(50) NULL');

আমি অন্যদের পাশাপাশি আছে কল্পনা।

যা তৈরি হচ্ছে তার বিষয়ে প্রকৃত বিশদ বিবরণ বা চুক্তি ব্যতীত, ইউটিআইয়ের চার্জযুক্ত বিকাশকারী বিশিষ্ট বিভাগটির জন্য সম্ভবত সমস্ত attribute_codeকলামগুলি লক্ষ্য করা গেছে, স্বল্পতমটি বেছে নিয়েছে এবং ব্যবহারকারীরা কোনও বৈশিষ্ট্য কোড তৈরি করতে পারে না তা নিশ্চিত করার জন্য একটি দৈর্ঘ্য প্রয়োগ করেছিলেন make অন্যান্য বিকাশকারীরা যে বিভিন্ন টেবিলে কাজ করছেন তার একটিতে এটি খুব দীর্ঘ হবে।

কোনও বিকাশকারী কেন এমন varcharদৈর্ঘ্যটি বেছে নেবেন যেটি ছিল না 255- এটি ডাটাবেস ডিজাইনের বিষয়ে একটি বিদ্যালয় রয়েছে যা বলছে যে আপনি কেবল নিজের কলামগুলি ততক্ষণ তৈরি করবেন যতক্ষণ না তাদের ডিস্কের স্থান বাঁচাতে, র‌্যাম হ্রাস করতে হবে, যোগদানের ক্রিয়াকলাপে আরও দক্ষ হতে হবে , ইত্যাদি। কিছু বিকাশকারী এখনও "এটি যতটা সম্ভব বৃহত্তর করুন এবং পরবর্তীকালে পারফরম্যান্সের প্রভাব সম্পর্কে উদ্বিগ্ন" এর আধুনিক প্রবণতাটিকে এই বনাম ধরে রাখেন। এটা তোলে সর্বাধিক একটি দৈর্ঘ্যের উপর মতানৈক্য ছিল পরিষ্কার varcharজন্য attribute_codeএক পর্যায়ে Magento কোর টিম মধ্যে 's, এবং এখন এটি উত্তরাধিকার কোডে উপর বসবাস।


এটি যেমন নিখুঁত উদাহরণ হতে পারে, আমি মনে করি @ এক্সফয়েডের কম ক্র্যাঙ্কি (এবং সঠিক) উত্তর রয়েছে।
অ্যালান ঝড়

0

এক্সফয়েড যেমন বলেছেন, পূর্বের সীমাবদ্ধতাটি যখন ওরাকল বিডি সমর্থিত হয়েছিল কারণ ওরাকলে, কলামগুলি কেবল 30 টি অক্ষর দীর্ঘ হতে পারে।

এখন,

ওকোরশেঙ্কো কোর পরিবর্তনের পরে ( PR # 10225 )

const ATTRIBUTE_CODE_MAX_LENGTH = 60;

নিম্নলিখিত ধরণটি প্রতিটি ধরণের সনাক্তকারীর সর্বোচ্চ দৈর্ঘ্য বর্ণনা করে।

| Identifier | Maximum Length (characters) |
|------------|-----------------------------|
| Column     | 64                          |

মানটি 60 হিসাবে সংজ্ঞায়িত করা হয়েছে কারণ ফ্ল্যাট মোডে অ্যাট্রিবিউট কোডটি কলামের নামে রূপান্তরিত হবে। মাইএসকিউএল কলামের নামে কেবলমাত্র 64৪ টি প্রতীকের অনুমতি দেয়।


-5

এই ত্রুটিটি সমাধান করার জন্য, দয়া করে এই কোডটি ব্যবহার করুন

কনট্রেড এটিআরটিবিট_সোডি_এমএক্স_এলএনজিএইচ = 30; 60 এ

কোডটি হওয়া উচিত

কনট্রেটেড ATTRIBUTE_CODE_MAX_LENGTH = 60;

এটি আপনার সমস্যার সমাধান করবে।


4
একটি মূল পরিবর্তন ?! নিশ্চয়ই আপনি উপহাস করেছেন
ফিলিঙ্কল

1
কেন 60 এবং 212 নয়?
মারিয়াস

1
5000000 না কেন?
বাটল বাটকাস

আপনি যদি পণ্যগুলি সম্পাদনা করার সময় অ্যাট্রিবিউট বিকল্পগুলি সংরক্ষণ করতে সক্ষম হবেন না ...
লোফেল

@ মারিয়াস: EAV বৈশিষ্ট্য কোডটি ফ্ল্যাট টেবিলগুলির জন্য কলামের নামে রূপান্তরিত হবে এবং মাইএসকিউএল
than৪
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.