2016-04-30 3 views
11

, wenn ich meine ubuntu 15,10-16,04 bekam ein Upgrade habe ich dieses erro in meinem yii2 ProjektSQLSTATE [42000]: Syntaxfehler oder Zugriffsverletzung: 1055 Expression # 3 von SELECT-Liste ist in GROUP BY-Klausel nicht und enthält nicht aggregierten

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 

Die SQL ausgeführt wird, war:

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 

, wie mein Problem zu lösen?

Antwort

3

Wenn Sie eine Aggregatfunktionssumme und einen Spaltennamensatz auswählen, weist der Fehler darauf hin, dass Sie nicht die korrekte Liste des Spaltennamens in der Gruppenklausel angegeben haben. könnte man mehr Spalten Name in Gruppe

Sie haben auch ,(opportunity.id),(opportunity_conditions.money), (opportunity.mantaghe), von wahrscheinlich im Zusammenhang mit der profile_details, opportunity_conditions Tabelle hinzufügen sollte, warum die () wenn Sie summieren müssen Sie Summe an alle Spalte

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

Summe (Gelegenheit hinzufügen. mantaghe),

sonst, wenn thes sind normale Spalten sollten Sie den normalen sintax verwenden, ohne()

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

Ich habe versucht, eine mögliche Abfrage auf dem Wesentlichen Spaltennamen

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 

mit Gruppe von neu zu schreiben (ich hoffe)

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

ODER Führen Sie einfach den

$ sudo mysql -u root -p

Ändern Sie den SQL-Modus für Ihre MySQL Server-Instanz

mysql > SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY','')); 

eine andere Art und Weise würde die mysql configs

gehen werden mit einem Abschnitt /etc/mysql/my.cnf

  • hinzufügen für [mysqld] und direkt darunter die Anweisung sql_mode hinzufügen = ""
  • starten Sie den mySQL-Dienst $ sudo systemctl Neustart mysql
+0

Arbeitete für mich, danke. – Stephen

+0

Es hat auch für mich funktioniert. Danke – manian

+0

Wie Rollback? – abenevaut

0

T hx, das hat mir geholfen, aber das wird es nicht setzen PERMANENTly, und es wird nach jedem Neustart zurückgesetzt.

So sollen Sie dies in Ihrer Konfigurationsdatei festgelegt (zB /etc/mysql/my.cnf im Abschnitt [mysqld]), so dass die Änderungen in Kraft bleiben, nach einem MySQL-Neustart:

Config File: /etc/mysql/my.cnf

[mysqld] 
sql-mode="STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION" 
Verwandte Themen