・ Schienen 6.0.3.2 ・ MySQL Ver 14.14 Distrib 5.6.47 ・ Osx10.15 ・ Auf Heroku bereitstellen
Beim Erstellen einer Web-App mit Rails und beim Bereitstellen auf Heroku ist ein Fehler aufgetreten.
Beim Überprüfen des Fehlers mit dem Heroku-Protokoll habe ich die folgende Anzeige gefunden
operator does not exist: timestamp without time zone ~~ unknown
Ich habe die Fehleranweisung zuerst nicht verstanden, aber da der Zeitstempel ein Spaltentyp ist, habe ich herausgefunden, dass etwas mit dem Typ nicht stimmt, und habe ihn weiter nachgeschlagen.
Dann stellte sich heraus, dass es ein Problem mit der bedingten Anweisung der DB-Suche gab. Im Detail trat ein Problem auf, weil die Logik, die nach Datum und Uhrzeit der Datenerstellung suchte, nach einer Zeichenfolge (Zeichenfolgentyp) suchte, wie unten gezeigt.
where('created_at: LIKE(?)', "%%-%%-%%") #Der Code links ist der betreffende Code
Die Ursache ist, dass Herokus DB "PostgreSQL" ist, was sich von meiner Umgebung (MySQL) unterscheidet. Selbst wenn Sie in "MySQL" nach einer Zeitstempeltypspalte mit einem Zeichenfolgentyp suchen, wird diese automatisch konvertiert (Vergebung). Es scheint, dass es in "PostgreSQL" nicht funktioniert, wenn die SQL-Anweisung nicht streng ist. (Streng ···)
Ich habe es mit einer Methode namens xxx.in_time_zone gelöst. Zum Beispiel in meinem Fall, wenn ich monatlich Daten sammeln und Daten für August 2020 erfassen möchte (siehe unten)
search_time = "2020-08-01"
(Modellname).where(created_at: search_time.in_time_zone.all_month)
Auf diese Weise können Sie nach Daten mit dem Zeitstempeltyp suchen, sodass dies mit "PostgreSQL" gut funktioniert hat! Auch die Beschreibung hat abgenommen und es ist erfrischend! Sie können den letzten all_month in all_day usw. ändern und es ist ziemlich brauchbar! Es gibt einen Link für Details, so dass er sehr leicht verständlich geschrieben ist!
Über die Fehleranweisung ・ Https://nobuneko.com/blog/archives/2010/05/postgresql83operator_does_not.html Informationen zur Zeitklasse und zur DateTime-Klasse ・ Https://qiita.com/jnchito/items/cae89ee43c30f5d6fa2c
Recommended Posts