sql >> Databasteknik >  >> RDS >> PostgreSQL

Rails-appen på Heroku kan inte skriva till PostgreSQL-databasen, endast läsa

Det här låter mycket som ett transaktionsproblem, där du inte är COMMIT göra dina transaktioner efter att du har arbetat, så att ändringarna går förlorade. Om din SQLite-drivrutin har som standard COMMIT transaktioner som avslutas utan en uttrycklig COMMIT eller rollback, och din Pg-drivrutin är som standard ROLLBACK , skulle du få beteendet beskrivet. Samma sak kommer att hända om SQLite standardinställer att autocommitting varje sats som standard, och Pg-drivrutinen som standard öppnar en transaktion.

Detta är ett av många goda skäl att använda samma lokala databas för testning som du ska distribuera till när du vill gå live.

Om du var på en normal Pg-instans skulle jag säga till dig att aktivera log_statement = 'all' i postgresql.conf , ladda om sidan och titta på loggarna. Du kan inte göra det på Heroku, men du har tillgång till Pg-loggarna med heroku logs --ps postgres . Testa att köra ALTER USER my_heroku_user SET log_statement = 'all'; , testa om och undersöka loggarna.

Alternativt, installera Pg lokalt.

Andra mindre troliga möjligheter som kommer att tänka på:

  • Du använder långvariga SERIALIZABLE-transaktioner för läsningar, så deras ögonblicksbild uppdateras aldrig. Ganska osannolikt.
  • Behörigheter för databasobjekt orsakar INSERT s, UPDATE s, etc misslyckas, och din app ignorerar de resulterande felen. Återigen, osannolikt.
  • Du har DO INSTEAD regler som inte gör som du förväntar dig, eller BEFORE triggers som returnerar NULL , vilket tyst förvandlar operationer till no-ops. Verkar osannolikt om du testar med SQLite.
  • Du skriver till en annan DB än du läser från. Inte omöjligt i inställningar som försöker läsa från ett kluster av heta standbylägen, etc.



  1. Hur man infogar HTML-valvärde som text i MySQL via PHP

  2. Låser PESSIMISTIC_WRITE hela tabellen?

  3. Varför lägger Oracles to_char()-funktion till mellanslag?

  4. Saknar oanvända mysql-anslutningar ner skript?