hook_schema ডাটাবেস টেবিল তৈরি করছে না


12

প্রক্রিয়া_লগিন নামে একটি কাস্টম মডিউলের অংশ হিসাবে নীচের ফাংশনটি প্রক্রিয়া_লগিন.ইনস্টল-এ অন্তর্ভুক্ত রয়েছে। মডিউলটি যদি আমি ম্যানুয়ালি ডেটাবেস টেবিলটি তৈরি করি তবে কাজ করে তবে স্বাভাবিকভাবেই আমি টেবিলটি স্বয়ংক্রিয়ভাবে ইনস্টল করতে চাই।

ফাংশনটি নিজেই মডিউলটি ইনস্টল করার ক্ষেত্রে স্কিমা ত্রুটি তৈরি করে না। তবে এটি ড্রুপাল 7 মাইএসকিউএল ডাটাবেসে ডাটাবেস টেবিল প্রক্রিয়া_লগিন_ নিবন্ধ তৈরি করে না।

আমি দেখতে পাচ্ছি এমন অন্য কোনও ত্রুটি বা সাইট রিপোর্ট দ্বারা রিপোর্ট করা সমস্যা নেই।

আমি এটি পুরোপুরি সরিয়েছি এবং বহুবার পুনরায় ইনস্টল করেছি। আমি ওয়েবটি ব্যাপকভাবে অনুসন্ধান করেছি এবং ড্রুপাল বিকাশের বিষয়ে আমার দুটি বইয়ের পরামর্শ নিয়েছি। আমি এই ফাংশনটির সাথে কোনও ভুল দেখতে পাচ্ছি না (নীচে তালিকাভুক্ত)।

দ্রষ্টব্য: আমি 'আইডি' সিরিয়াল হিসাবে সংজ্ঞায়নের চেষ্টা করেছি কিন্তু একই ফলাফল পেয়েছি (যেমন কোনও সারণী তৈরি হয়নি)।

আমি ধারণা করে ফেলেছেন। কেউ কি জানেন যে এই ফাংশনটি কেন কাজ করছে না?

function process_login_schema(){
  $schema['process_login_register'] = array(
        'description' => 'Register a specific computer with the system.',
        'fields' => array(
                'id' => array(
                    'description' => 'Primary identifier.',
                    'type' => 'int',
                    'unsigned' => TRUE,
                    'size' => 'normal',
                    'not null' => TRUE,
                    'default' => 0,
                ),
                'ip' => array(
                        'description' => "The user's IP address at registration.",
                        'type' => 'varchar',
                        'length' => 32,
                        'not null' => TRUE,
                        'default' => '',
                ),
                'user_agent' => array(
                        'description' => "The user's browser user agent string at registration.",
                        'type' => 'varchar',
                        'length' => 255,
                        'not null' => TRUE,
                        'default' => '',
                ),
        ),
        'primary key' => array('id'),
  );
  return $schema;
}

আপনি কোন ড্রুপাল সংস্করণ ব্যবহার করছেন?
googletorp

3
ফাংশনটি লেখার পর থেকে আপনি কি মডিউলটি বাস্তবে আনইনস্টল এবং পুনরায় ইনস্টল করেছেন (কেবলমাত্র অক্ষম ও পুনরায় সক্ষম নয়)?
ক্লাইভ

ড্রুপাল 6 এর জন্য হুক_ইনস্টল-এ ড্রুপাল_ইনস্টল_সেমিমা () কল করা দরকার। ড্রুপাল 7 এ এটি স্পষ্টভাবে কল না করার পরামর্শ দেওয়া হচ্ছে।
শোয়েব নওয়াজ

উপরে উত্তর: দ্রুপাল 7. হ্যাঁ। আমি ড্রুপাল 7 ব্যবহার করছি তাই ড্রপাল_ইনস্টল_সেমিমা () কল করবেন না।
ব্যবহারকারী 8109

1
@ ব্যবহারকারী 8109 মডিউলগুলিতে দুটি সম্পূর্ণ ভিন্ন জিনিস সক্ষম / অক্ষম করা এবং ইনস্টল / আনইনস্টল করা। একটি মডিউল সক্ষম করা (মডিউল পৃষ্ঠায় এটি পরীক্ষা করা এবং 'জমা দিন' টিপানো) কেবলমাত্র একটি মডিউল সক্ষম করবে এবং অনুরোধ করবে hook_enable()। মডিউল ইনস্টল করা কেবলমাত্র এটি আনইনস্টল করার পরে (আনইনস্টল ট্যাব ব্যবহার করে বা ডেভেল / পুনরায় ইনস্টল করা) কাজ করা যেতে পারে, তার পরে মডিউলটির দ্বারা তৈরি সমস্ত টেবিল মুছে ফেলা হবে। তারপরে আপনি যখন মডিউলটি ইনস্টল করবেন, তখন আপনি hook_install()যেমনটি প্রত্যাশা করতেন তেমন চালানো হয়
ক্লাইভ

উত্তর:


22

ব্যবহারের drush dre -y [module]যা পঙ্গু, আনইনস্টল এবং তারপর মডিউল পুনরায় সক্ষম করে। -yপতাকা, এটা এমনকি দ্রুত বানায় এড়ানো আপনি প্রেস আছে Y এবং তিনবার লিখুন।


16

আপনি যদি কোনও মডিউল আনইনস্টল করেন এবং পরবর্তী সময়ে এটি পুনরায় ইনস্টল করেন তবে এটি ব্যবহার করে এবং এর সাথে ঘোষিত ডেটাবেস টেবিলগুলি hook_schema()পুনরায় তৈরি করা হবে।

একটি মডিউল আনইনস্টল করতে, আপনার প্রয়োজন:

  • মডিউলটির জন্য প্রদর্শিত চেকবাক্সটি চেক করুন

    স্ক্রিনশট

  • সংরক্ষণ কনফিগারেশন ক্লিক করুন

    স্ক্রিনশট

  • আনইনস্টল_ ট্যাবে ক্লিক করুন

  • মডিউল নামের বামে চেক বাক্সে ক্লিক করুন
  • আনইনস্টল বোতামে ক্লিক করুন

    স্ক্রিনশট

  • পরবর্তী পৃষ্ঠায়, আনইনস্টল বোতামে ক্লিক করে আপনি সেই মডিউলটি আনইনস্টল করতে চান তা নিশ্চিত করুন

    স্ক্রিনশট

বিকল্প হিসাবে, আপনি ড্রাশ ইনস্টল করা থাকলে, আপনি নিম্নলিখিত কমান্ড ব্যবহার করতে পারেন।

drush pm-disable $module
drush pm-install $module
drush en $module

প্রতিস্থাপন $module, মডিউল সংক্ষিপ্ত নাম দিয়ে apices মধ্যে, এবং .module এক্সটেনশন ছাড়াই।

আপনি যা করেছেন তা হ'ল মডিউলটি অক্ষম করা, এবং তারপরে এটি পুনরায় সক্ষম করে। এমনকি আপনি মডিউলযুক্ত ডিরেক্টরি মুছে ফেললেও, ড্রুপালের জন্য আপনি যা করেছেন তা কেবল অক্ষম করা, এবং তারপরে এটি পুনরায় সক্রিয় করা।


এটা কি সম্ভব এই drupal_install_schema ব্যবহার করে এবং drupal_uninstall_schema .... করতে drupal.org/node/876250
Hitesh
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.