2009-07-27 12 views
6

पर WAR फ़ाइल को तैनात करते समय SQL तालिका नहीं बनाई गई है मैंने Liferay के लिए एक JSR-268 पोर्टलेट बनाया है जो डेटाबेस के साथ संवाद करने के लिए सेवाओं का उपयोग करता है। मैं बिना किसी समस्या या त्रुटियों के पोर्टल को तैनात कर सकता हूं, लेकिन सेवाओं द्वारा परिभाषित तालिका बनाई गई नहीं है!Liferay

जब मैं पोर्टल का परीक्षण करता हूं तो मुझे कोई "तालिका नहीं मिली" त्रुटि नहीं मिलती है। मुझे कोई त्रुटि नहीं है! तालिका डेटाबेस में बस नहीं है। मुझे इंटरनेट पर अन्य चीजें मिल रही हैं, जिसमें कहा गया है कि मुझे उत्पन्न "create.sql" फ़ाइल का उपयोग करना चाहिए जो Liferay Service Builder ने बनाया है, लेकिन मुझे वह फ़ाइल कहीं भी नहीं दिखाई दे रही है।

क्या कोई मेरी मदद कर सकता है?

उत्तर

10

क्या टेबल कभी नहीं बनाए गए हैं? जब मैंने टेबल से हाथ हटा दिया तो मुझे भी इसी तरह की समस्या थी। मैंने सोचा कि फिर से पोर्टलेट को तैनात करते समय उन्हें फिर से बनाया जाएगा, लेकिन ऐसा नहीं हुआ।

स्रोत कोड अध्ययन करने के बाद मुझे पता चला है कि इससे पहले कि यह कार्यान्वित तालिका servicecomponent में portlets और चेक 2 चीजों के बारे में Liferay जानकारी संग्रहित META-INF/tables.sql में (छद्म) एसक्यूएल:

  1. build.numberservice.properties में होना चाहिए उस से अधिक, servicecomponent,
  2. tables.sqlservicecomponent में संग्रहीत एक से अलग होना चाहिए।

केवल तभी tables.sql निष्पादित किया गया है।

इसे प्राप्त करने का एक आसान तरीका है, servicecomponent में सभी प्रविष्टियों को अपने पोर्टलेट को संबोधित करना है।

2

सेवाकंपनी तालिका से एक प्रविष्टि को हटाकर देखें। और अपने पोर्टल को फिर से तैनात करें।

delete FROM servicecomponent where buildNamespace="<your table namespace>" 
0

आप Liferay 6.2 में serviceBuilder उपयोग कर रहे हैं जब आप service.xml में Liferay स्कीमा में एक नई इकाई को परिभाषित, पहली बार है कि किसी भी Portlet की कोशिश करता है तालिका यह बनाया जाएगा तक पहुँचने के लिए अगर यह अस्तित्व में नहीं है ।

जब आप एक अलग स्कीमा का उपयोग कर रहे हैं तो कई समस्याएं हैं क्योंकि कभी-कभी Liferay स्वचालित रूप से टेबल नहीं बनाते हैं। फिर आपको क्रिएशन एसक्यूएल वाक्य को लॉच करने और इसे मैन्युअल रूप से बनाने की आवश्यकता है और फिर इसे स्थानीय सेवा के माध्यम से एक्सेस करना होगा।

1

मुझे एक ही समस्या का सामना करना पड़ा है और नीचे दिए गए समाधान मेरे लिए काम करता है।

कदम

  1. मैं service.properties servicecomponent में जमा हो जाती है कि अधिक से अधिक में build.number बदल दिया है।
  2. मेटा-आईएनएफ फ़ोल्डर से सभी एक्सएमएल फ़ाइलों को हटा दिया गया।
  3. वेबपैप/वेब-आईएनएफ/एसक्यूएल फ़ोल्डर से सभी एसक्यूएल फ़ाइलों को हटा दिया गया।

फिर निर्माण सेवा और तैनात कि service.xml फ़ाइल में defiend हैं कस्टम तालिकाएं बनाता है।

संबंधित मुद्दे