MagicStack / MagicStack/asyncpg
[Bug] Wrong number of columns Error
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Python
- Sterne
- 8.1k
- Forks
- 468
- PR-Merge-Kennzahlen
- Keine gemergten PRs in 30 T.
Beschreibung
- asyncpg version: 0.23
- PostgreSQL version: 13
- Do you use a PostgreSQL SaaS? If so, which? Can you reproduce
the issue with a local PostgreSQL install?: Yandex Cloud - Python version: 3.7
- Platform: Ubuntu 18.04
- Do you use pgbouncer?: yes
- Did you install asyncpg with pip?: no
- If you built asyncpg locally, which version of Cython did you use?: no
- Can the issue be reproduced under both asyncio and
uvloop?: don't know
We have a web server on Python which is sending queries to the PostgreSQL cluster. After adding a column to the table using a migration without disconnecting I encounter errors with some queries to that table. Example of the query below:
WITH row_info as ( SELECT id FROM UNNEST($1::scheme.affected_table[]) ) DELETE FROM scheme.affected_table AS entities USING row_info WHERE entities.id = row_info.id;
To $1 I pass the list of dictionaries like [{'id': 1, 'field1': 'value1', ...}].
Before the migration or from new connections the query works perfectly. But for queries from web-server I get "wrong number of columns: 11, expected 12". Rebooting the web-server resolves the problem.
I think the problem can be related to Prepared Statements or encoding of Mapping.
Beitragsleitfaden
Für dieses Repository ist kein Beitragsleitfaden indexiert
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
Der Bericht enthält keine Quelldatei und keinen Test-Einstiegspunkt. Beginne damit, die UNNEST-Abfrage nach einer Schema-Migration mit einer bestehenden Verbindung zu reproduzieren, und vergleiche sie anschließend mit einer neuen Verbindung, während du vorbereitete Anweisungen und die Kodierung des Mappings untersuchst. Als erledigt gilt die Aufgabe, wenn die Abfrage mit der veralteten Verbindung keinen Fehler wegen einer nicht übereinstimmenden Spaltenanzahl mehr meldet.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- postgresql, python
- Bereich
- databases
- Issue-Typ
- Bug
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Muss geklärt werden
- Anfängerfreundlichkeit
- 30/100