Vytvořil jsem Express.js aplikace hostovaná Heroku , s nevloženým PostgreSQL databáze.
Aplikace běžela tak, jak bylo zamýšleno přibližně před měsícem a několik měsíců před tím. Když jsem se však dnes přihlásil, narazil jsem na vážný problém.
Kdykoli se pokusím o přístup na jakoukoli stránku, která se dotazuje na databázi, pokusí se na několik sekund načíst a poté mi zobrazí standardní stránku Heroku „Chyba aplikace“.
Přístup k databázi prostřednictvím Javascriptu
Takto vypadá část mého kódu, který se dotazuje na databázi:
var that = this; var title = "The Journal"; var queryString = "SELECT * FROM JournalEntry "+ "ORDER BY theTimeStamp ASC;"; var extract, data; const client = new Client({ connectionString: process.env.DATABASE_URL, ssl: { rejectUnauthorized: false } }); console.log(process.env.DATABASE_URL); console.log("Hello!"); client.connect(); console.log("My!"); client.query(queryString, (err, result) => { if(err) throw err; console.log("Lovely!"); extract = result.rows; data = interpretJournalExtract(extract); data = objectifyExtract(data); client.end(); that.finaliser.protoRender(req, res, "tabular", { title: title, data: data }); });
A takto vypadají protokoly, když spustím tento kód:
2021-03-02T16:12:14.780345+00:00 app[web.1]: postgres://stfonefosxlmgt:227d3914dfb105c6ad3db47ad854f771391b15c8dead2da0a691a66d25cb2f65@ec2-54-228-237-40.eu-west-1.compute.amazonaws.com:5432/de337svimlvbgo 2021-03-02T16:12:14.780701+00:00 app[web.1]: Hello! 2021-03-02T16:12:14.781269+00:00 app[web.1]: My! 2021-03-02T16:12:44.784363+00:00 heroku[router]: at=error code=H12 desc="Request timeout" method=GET path="/journal" host=hgmj.herokuapp.com request_id=f28bdda2-f3bd-40b2-a894-e07cb9e0054c fwd="86.191.159.122" dyno=web.1 connect=1ms service=30012ms status=503 bytes=0 protocol=http 2021-03-02T16:12:44.785541+00:00 app[web.1]: GET /journal - - ms - -
Všimnete si, že se protokoly dostanou na "Ahoj!" a „Moje!“, ale ne na „Krásný!“.
Přístup k databázi prostřednictvím rozhraní Heroku CLI
Za zmínku také stojí, že mohu přistupovat k databázi prostřednictvím rozhraní Heroku CLI a takto vypadá moje obrazovka, když tak učiním:
-> Connecting to postgresql-curly-19296 psql (12.6 (Ubuntu 12.6-0ubuntu0.20.04.1), server 11.11 (Ubuntu 11.11-1.pgdg16.04+1)) SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES256-GCM-SHA384, bits: 256, compression: off) Type "help" for help. hgmj::DATABASE=>
Sečteno a podtrženo
Proč se to děje a co s tím mohu dělat?
Odpověď
Měl jsem stejný problém. Přidání
ssl: { rejectUnauthorized: false }
parametr k připojení fungoval. Potřeboval jsem upgradovat balíček pg, aby fungoval.