2016-04-30 1 views
11

जब मैं 16.04 करने के लिए 15.10 से मेरी ubuntu अपग्रेड किया गया है मैं अपने yii2 परियोजना में इस erro हैSQLSTATE [42000]: सिंटैक्स त्रुटि या पहुँच उल्लंघन: चयन सूची के 1055 अभिव्यक्ति # 3 GROUP BY क्लॉज़ में नहीं है और शामिल nonaggregated

SQLSTATE[42000]: Syntax error or access violation: 1055 Expression #3 
of SELECT list is not in GROUP BY clause and contains nonaggregated column 
'iicityYii.opportunity_conditions.money' which is not functionally dependent 
on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by 

करें SQL निष्पादित किया जा रहा था:

SELECT SUM(oc.money),op.id,oc.money, 
      op.mantaghe, 
      op.`time`, op.`id`, `op`.`logo`, 
      `pd`.`user_id`, `op`.`name`, 
      `pd`.`co_name`, `op`.`address`, 
      `op`.`project_type_id`, `op`.`state_id` 
FROM `opportunity` op 
INNER JOIN `profile_details` pd ON op.user_id=pd.user_id 
INNER JOIN `opportunity_conditions` oc ON op.id=oc.opportunity_id 
GROUP BY `op`.`id` 
ORDER BY `op`.`id` DESC 

कैसे मेरी समस्या हल करने के लिए?

उत्तर

3

आप चुनते हैं कि आपके पास कुल कार्य योग और कॉलम नाम का एक सेट है, तो त्रुटि आपको बताती है कि आपने खंड में समूह में कॉलम नाम की सही सूची निर्दिष्ट नहीं की है। हो सकता है आप शायद profile_details, opportunity_conditions तालिका

क्यों () अगर आप योग की जरूरत है आप सभी स्तंभ

sum(opportunity.id), sum(opportunity_conditions.money), 

राशि (अवसर के लिए योग को जोड़ना होगा तुम भी ,(opportunity.id),(opportunity_conditions.money), (opportunity.mantaghe), है से संबंधित द्वारा समूह में अधिक स्तंभ नाम जोड़ना चाहिए। mantaghe),

अन्यथा यदि एचटीएमएल सामान्य स्तंभ हैं आप (बिना सामान्य sintax)

opportunity.id, opportunity_conditions.money,opportunity.mantaghe,

का उपयोग करना चाहिए

मैं आवश्यक स्तंभ नाम पर (मैं आशा) द्वारा एक संभव क्वेरी

SELECT SUM(opportunity_conditions.money), 
     `opportunity`.`id`, 
     `opportunity_conditions.money`, 
     `opportunity.mantaghe`, 
     `opportunity`.`time`, 
     `opportunity`.`logo`, 
     `profile_details`.`user_id`, 
     `opportunity`.`name`, 
     `profile_details`.`co_name`, 
     `opportunity`.`address`, 
     `opportunity`.`project_type_id`, 
     `opportunity`.`state_id` 
FROM `opportunity` 
INNER JOIN `profile_details` ON `opportunity`.`user_id`= `profile_details`.`user_id` 7 
INNER JOIN `opportunity_conditions` ON `opportunity`.`id`=`opportunity_conditions`.`opportunity_id` 
GROUP BY`opportunity`.`id`, `profile_details`.`user_id`,`opportunity_conditions.money`, 
ORDER BY `opportunity`.`id` DESC 
समूह के साथ

के पुनर्लेखन के लिए

GROUP BY`opportunity`.`id`, `profile_details`.`user_id`,`opportunity_conditions.money`, 
23

या बस चलाने

$ sudo mysql -u की कोशिश की है रूट-पी

अपने MySQL सर्वर इंस्टेंस

के लिए SQL मोड बदलें
mysql > SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY','')); 

एक और तरीका mysql कॉन्फ़िगरेशन

का उपयोग करेंगे /etc/mysql/my.cnf को जाने

  • [mysqld] और सही नीचे के लिए यह बयान sql_mode जोड़ने एक अनुभाग जोड़ने = ""
  • पुनः आरंभ mysql सेवा $ sudo systemctl पुनः आरंभ mysql
+0

मेरे लिए काम किया, धन्यवाद। – Stephen

+0

यह मेरे लिए भी काम किया। धन्यवाद – manian

+0

रोलबैक कैसे करें? – abenevaut

0

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

तो तुम ([mysqld] अनुभाग में जैसे /etc/mysql/my.cnf) अपने कॉन्फ़िग फ़ाइल में इस सेट करना चाहिए, ताकि परिवर्तन एक MySQL पुनः आरंभ करने के बाद प्रभाव में रहेंगे:

कॉन्फ़िग फ़ाइल: /etc/mysql/my.cnf

[mysqld] 
sql-mode="STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION" 
संबंधित मुद्दे

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