ghadirkiani 214 ارسال شده در بهمن 93 سلام زمان نصب rok gallery این ارور رو میده Specified key was too long; max key length is 767 bytes SQ چکار کنم؟ نقل قول به اشتراک گذاری این ارسال لینک به ارسال به اشتراک گذاری در سایت های دیگر
مصطفی صفرعلی 2,891 ارسال شده در بهمن 93 با سلام این مشکل برمیگرده به ساختار فایل SQL و به دو طریق قابل حله : 1 - اگر نسخه MySQL تون پایینه ، با ارتقا MySQL مشکل حل میشه البته نسخه ای که مناسب عملکرد جوملا هم باشه 2 - تو این روش باید فایل SQL افزونه رو بررسی و ویرایش کنید اینکه برای کدوم تیبل خطا میده باید خودتون بررسی کنید . در حقیقت این مشکل مربوط به میزان حافظه ای هست که کلیدهای اصلی جدول یا همون Primary Key بیش از حد معمول استفاده میکنند مثلا اگر تیبلی فرضا 10 تا فیلد داره و 2 تا از فیلدها بعنوان کلید اصلی انتخاب شده باشند و باز هم فرضا از نوع varchar با مقدار طول 200 باشند ، آنگاه میزان حافظه ای که این دو فیلد اشغال میکنند برابر است با ، سه برابر مجموع اندازه کلیدهای اصلی که حاصل آن عددی بر حسب بایت میباشد . یعنی (200 + 200) * 3 = 1200 با این حساب در قیاس با مقداری که در پیام خطا مشخصه ( 767 ) باید مقدار طول کلیدهای اصلی رو کاهش بدید به حدی که مقدار 1200 به مقداری کمتر از 767 برسد برای اینکه بدانید به چه میزان کاهش دهید کافیست روال زیر را طی کنید 1200 - 767 = 433 433 / 3 = 144.3 ~ 145 145 / 2 = 72.5 200 - 72.5 = 127.5 ~ 127 در خط اول اختلاف بایت ها محاسبه شده . در خط دوم اختلاف بدست آمده را بر 3 تقسیم میکنیم . در خط سوم مقدار بدست آمده را بر تعداد فیلدها تقسیم میکنیم و در خط چهارم مقدار واقعی که فیلد باید داشته باشه محاسبه میکنیم البته در خط سوم و چهارم ما فرض رو بر این گذاشتیم که از فیلدها به یک نسبت مقداری کم شود ولی اینکار همیشه هم نمیتونه درست باشه چون هر فیلدی کاربرد مخصوص خودش رو داره و نمیشه همینجوری اندازه یک فیلد رو تغییر داد باید اندازه ها متناسب با کاربرد فیلد مربوطه باشه در واقع مهم اینه که شما به مقدار خط دوم برسید و به همان میزان و بطور معقول ، اندازه ها رو تعیین کنید حال اگر مقدار هر فیلد را برابر 127 قرار دهیم ، آنگاه (127 + 127) * 3 = 762 میبینید که نتیجه ای رو که میخواستیم بدست آوردیم اعداد و ارقامی که در بالا ذکر کردم جنبه مثال دارند . شما باید بر اساس کوئری که در فایل SQL افزونه نوشته شده ، اقدام کنید البته انتخاب مناسب نوع Storage Engine ها هم در این زمینه بی تاثیر نیستند موفق و پیروز باشید یا حق 1 واکنش ها : ghadirkiani نقل قول به اشتراک گذاری این ارسال لینک به ارسال به اشتراک گذاری در سایت های دیگر
ghadirkiani 214 ارسال شده در بهمن 93 ممنون ببینید از این جدول ایراد گرفته اما این جدول 1فیلد کلیددی داره اونم id که از نوع varchar نیست CREATE TABLE IF NOT EXISTS `#__rokgallery_files` ( `id` INT UNSIGNED NULL DEFAULT NULL AUTO_INCREMENT , `filename` VARCHAR(255) NOT NULL , `guid` CHAR(36) NOT NULL , `md5` CHAR(32) NOT NULL , `title` VARCHAR(200) NOT NULL , `description` TEXT NULL DEFAULT NULL , `license` VARCHAR(255) NULL DEFAULT NULL , `xsize` INT UNSIGNED NOT NULL , `ysize` INT UNSIGNED NOT NULL , `filesize` INT UNSIGNED NOT NULL , `type` CHAR(20) NOT NULL , `published` TINYINT(1) NOT NULL DEFAULT '0' , `created_at` DATETIME NOT NULL , `updated_at` DATETIME NOT NULL , `slug` VARCHAR(255) NULL DEFAULT NULL , UNIQUE INDEX (`id` ASC) , UNIQUE INDEX (`guid` ASC) , INDEX `#__rokgallery_files_published_idx` (`published` ASC) , INDEX `#__rokgallery_files_md5_idx` (`md5` ASC) , INDEX `#__rokgallery_files_guid_idx` (`guid` ASC) , UNIQUE INDEX `#__files_sluggable_idx` (`slug` ASC) , PRIMARY KEY (`id`) ) ENGINE = InnoDB; نقل قول به اشتراک گذاری این ارسال لینک به ارسال به اشتراک گذاری در سایت های دیگر
مصطفی صفرعلی 2,891 ارسال شده در بهمن 93 با سلام انتهای کد ، به جای InnoDB عبارت MyISAM را جایگزین کنید ، ببینید مشکل حل میشه یا نه اگر بازم مشکل پابرجا بود ، کوئری رو مستقیما تو دیتابیستون ایمپورت کنید و بعد افزونه رو نصب کنید (به پیشوند جدول هم دقت کنید) موفق و پیروز باشید یا حق نقل قول به اشتراک گذاری این ارسال لینک به ارسال به اشتراک گذاری در سایت های دیگر
ghadirkiani 214 ارسال شده در بهمن 93 ممنون تغیییر دادم اما این ارور رو داد Specified key was too long; max key length is 1000 bytes SQL راه دومم باز همین ارور ها رو داد نقل قول به اشتراک گذاری این ارسال لینک به ارسال به اشتراک گذاری در سایت های دیگر