2017-08-18 3 views
0

ich diese Tabelle muß MyISAM:CREATE TABLE nicht funktioniert zu InnoDB, sondern arbeitet

CREATE TABLE `peso_tec_dt_aj` (
    `idade` int(11) DEFAULT NULL, 
    `tecnico` varchar(50) DEFAULT NULL, 
    `obt` double DEFAULT NULL, 
    `pad` decimal(4,3) DEFAULT NULL, 
    `aves_peso` int(11) DEFAULT NULL, 
    `data_domingo` datetime DEFAULT NULL, 
    `data_domingo_ajustada` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, 
    KEY `peso_tec_dt_aj_idade_tecnico_index` (`idade`,`tecnico`) 
) ENGINE=InnoDB DEFAULT CHARSET=latin1; 

Die Abfrage unten funktioniert, wenn ich das schaffen mit der Aussage ENGINE = MYSAM verwenden, aber nicht, wenn ich mit Motor verwenden InnoDB.

Es funktioniert auch, wenn ich Aggregationen nicht machen oder wenn ich das Spaltenfeld entfernen data_domingo (DATETIME-) in der Gruppe von:

CREATE TABLE bucket_15.resultado as (
    select 
    peso_tec_dt_aj.idade, 
    peso_tec_dt_aj.tecnico, 
    (
     ROUND(
      SUM(peso_tec_dt_aj.obt * peso_tec_dt_aj.aves_peso)/
      SUM(peso_tec_dt_aj.aves_peso), 3 
      ) 
    ) as campo_computeado 
    from bucket_15.peso_tec_dt_aj 
    group by 
    peso_tec_dt_aj.idade, 
    peso_tec_dt_aj.tecnico, 
    peso_tec_dt_aj.data_domingo 
); 

Nach Durchlauf dieser Abfrage, wird MySQL keine Fehler zeigen. Die Abfrage ohne create table läuft in Ordnung.

Die obige Abfrage ist jedoch sehr einfach. Warum kann MySQL keine Tabelle mit diesen Spalten und Daten erstellen?

MySQL Version: 5.7

Hier einige Screenshots, Ihnen zu zeigen, dass mit der gleichen Abfrage keine Ergebnisse, wenn der Motor nicht MYISAM ist.

ERSTES BILD: Führen Sie die Abfrage aus, die ich für die Anweisung CREATE WITH SELECT verwenden werde, die beide Engines verwendet: MYISAM und InnoDB.

enter image description here

zweite Bild: Führen Sie die Abfrage ohne ENGINE = MYISAM. Das obige Ergebnis wird auf der neuen Tabelle resultado erwartet, aber es ist nicht: ohne Fehler.

enter image description here

drittes Bild: MIT ENGINE = MYISAM - Tabelle resultado ist magisch

erstellt

enter image description here

+0

Ich habe dies getestet und es funktioniert ohne Fehler mit InnoDB. Bitte kopieren Sie die genaue Fehlermeldung in Ihre Frage oben. Wenn Sie eine Frage zu Stack Overflow über einen Fehler stellen, fügen Sie immer den genauen Text der Fehlermeldung hinzu. –

+0

Im folgenden Skript funktioniert alles wie erwartet [db-fiddle] (https://www.db-fiddle.com/f/kFwq25KffTaXriMxZLUDd8/1). – wchiquito

+1

'Fehler'! =' Keine Fehler'. Können Sie 'CREATE TABLE' von MySQL Command Line ausführen ?. – wchiquito

Antwort

1

Diese Tabelle erstellen funktioniert gut von meiner Version 5.6.35 ohne Fehler

CREATE TABLE `peso_tec_dt_aj` (
    `idade` int(11) DEFAULT NULL, 
    `tecnico` varchar(50) DEFAULT NULL, 
    `obt` double DEFAULT NULL, 
    `pad` decimal(4,3) DEFAULT NULL, 
    `aves_peso` int(11) DEFAULT NULL, 
    `data_domingo` datetime DEFAULT NULL, 
    `data_domingo_ajustada` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, 
    KEY `peso_tec_dt_aj_idade_tecnico_index` (`idade`,`tecnico`) 
) ENGINE=MYISAM DEFAULT CHARSET=latin1; 

CREATE TABLE resultado as (
    select 
    peso_tec_dt_aj.idade, 
    peso_tec_dt_aj.tecnico, 
    (
     ROUND(
      SUM(peso_tec_dt_aj.obt * peso_tec_dt_aj.aves_peso)/
      SUM(peso_tec_dt_aj.aves_peso), 3 
      ) 
    ) as campo_computeado 
    from bucket_15.peso_tec_dt_aj 
    group by 
    peso_tec_dt_aj.idade, 
    peso_tec_dt_aj.tecnico, 
    peso_tec_dt_aj.data_domingo 
) ENGINE=MYISAM DEFAULT CHARSET=latin1; 

Über die zweite Abfrage, wenn es nicht funktioniert MySQL sollte den Fehler im Terminal oder in der Protokolldatei protokollieren.

In Ihrer zweiten create Query hatten Sie einen Punkt im Namen. Das war der Grund, warum es nicht funktioniert hat.

+0

'Bucket_15.resultado' sollte nicht das Problem sein. Es wird die Tabelle 'resultado' im Schema oder in der Datenbank 'bucket_15' erstellt. – wchiquito

+0

@wchiquito ja, aber es hat nicht funktioniert aus irgendeinem Grund – Noob

+0

@wchiquito - 'resultado' ist nicht erstellt. Das Endergebnis ist nicht das, was erwartet wird! – calebeaires