View a markdown version of this page

Differenze tra le versioni 2.x e 1.x del driver ODBC - Amazon Redshift

Amazon Redshift non supporterà più l'uso delle UDF Python dopo il 30 giugno 2026. Inizieremo ad applicarlo per fasi. Per ulteriori informazioni sulla fine del ciclo di vita e sulle opzioni di migrazione di Python, consulta il post del blog pubblicato il 30 giugno 2025.

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Differenze tra le versioni 2.x e 1.x del driver ODBC

Questa sezione descrive le differenze tra il driver ODBC 1.x e il driver ODBC 2.x e fornisce indicazioni su come migrare al driver 2.x. Descrive le modifiche che potrebbero influire sull'applicazione e come risolverle.

Differenze chiave da affrontare

Le seguenti azioni risolvono i problemi di migrazione più comuni. La maggior parte delle applicazioni richiede solo un sottoinsieme di questi.

DSN e stringa di connessione

  • Controlla il tuo DSN per le opzioni di driver che potrebbero essere state rimosse o rinominate. Alcune opzioni del driver ODBC 1.x non sono supportate nel driver ODBC 2.x. Altre sono state rinominate. Per informazioni dettagliate, vedi Stringa di connessione e opzioni DSN.

  • Imposta UseUnicode=true se l'applicazione dipende da codici a caratteri larghi (SQL_WVARCHAR,SQL_WCHAR). Nel driver ODBC 2.x, il UseUnicode valore predefinito èfalse, che riporta i tipi di caratteri ristretti.

  • Sposta le impostazioni di registrazione nella sezione. [ODBC] Su Linux e macOS LogLevel e LogPath deve essere impostato nella [ODBC] sezione globale diodbc.ini, non in una singola sezione DSN.

Interrogazione e schema

  • SQLTablesIncludi EXTERNAL TABLE nei filtri di tipo. In ODBC 2.x, sia le tabelle Amazon Redshift Spectrum che le tabelle datashare sono riportate come. EXTERNAL TABLE Se filtri per tipo, aggiungi SQLTables per continuare EXTERNAL TABLE a visualizzare questi oggetti. In alternativa, impostate l'EnableTableTypesopzione su 0 per normalizzare le informazioni dettagliate sul tipo di tabella nei tipi generici di tabella TABLE e VIEW, come descritto nella voce seguente.

  • I tipi di tabella dettagliati sono abilitati per impostazione predefinita. ODBC 2.x abilita l'EnableTableTypesopzione per impostazione predefinita. Il driver 1.x ha disabilitato questa opzione per impostazione predefinita. Con l'impostazione predefinita 2.x, SQLTables riporta tipi dettagliati come SYSTEM TABLE, SYSTEM VIEW, EXTERNAL TABLE e LOCAL TEMPORARY. Per riportare ogni tabella come tipo generico TABLE e ogni vista come VIEW, imposta su EnableTableTypes 0.

  • Trasmetti INTERVAL a VARCHAR per le applicazioni che non supportano il tipo di dati a intervalli. Alcuni client non supportano i tipi di intervallo ODBC. Per questi clienti, inserisci la colonna nella tua query: SELECT col::VARCHAR FROM ...

Codice dell'applicazione

  • Verifica le impostazioni di timeout delle query. ODBC 2.x viene applicato correttamente in SQL_ATTR_QUERY_TIMEOUT base alle specifiche ODBC. ODBC 1.x ha ignorato silenziosamente questa impostazione. Long-running le query che in precedenza erano riuscite potrebbero ora avere esito negativo con un errore di timeout. Rivedi e modifica i valori di timeout secondo necessità.

  • Fornisci la lunghezza dei dati per i parametri relativi ai dati in fase di esecuzione. 2.x riporta SQL_NEED_LONG_DATA_LEN come Y (1.x riportato). N Le applicazioni che associano SQL_DATA_AT_EXEC i parametri devono ora fornire in anticipo la lunghezza totale dei dati. StrLen_or_IndPtr

Stringa di connessione e opzioni DSN

La tabella seguente mostra le opzioni del driver ODBC 1.x che sono state rinominate o hanno equivalenti diretti nel driver ODBC 2.x.

Opzione 1.x Equivalente a 2.x Note
MaxLongVarChar MaxLongVarcharSize L'impostazione predefinita è cambiata da 8190 a 65535.
ConnectionTimeout LoginTimeout Stesso timeout di connessione, rinominato. Il valore predefinito è 0 (nessun timeout).
VpcEndpointUrl vpc_endpoint_url
SSLCertPath TrustStore o CaFile Percorso a un certificato CA utilizzato per verificare il server. In Windows, impostalo nel campo Trust Store della finestra di dialogo di configurazione del DSN; la finestra di dialogo non ha alcun CaFile campo. Se entrambi sono impostati, ha la TrustStore priorità.

Le seguenti opzioni 1.x non sono supportate nel driver 2.x corrente. Il driver 2.x le ignora, quindi non influiscono sulla connessione. La loro rimozione dal DSN è facoltativa ma consigliata per evitare confusione.

  • SingleRowMode— per limitare la memoria del client, usa StreamingCursorRows invece.

  • UseSystemTrustStore— non supportato. In Windows, il driver 1.x potrebbe convalidare il certificato del server rispetto all'archivio certificati di sistema di Windows. Il driver 2.x viene convalidato in base a un file di certificato CA: utilizza per impostazione predefinita il certificato principale di Amazon Redshift in bundle o il file specificato in o. TrustStore CaFile

  • TextAsLongVarchar,CheckCertRevocation,,EnableAwsSdkLogs,UseLogPrefix,Locale, UseDeclareFetchUseMultipleStatements, EnforceSingleStatement — nessun equivalente nella versione corrente. Il team di Amazon Redshift sta valutando equivalenti o alternative per queste opzioni nelle versioni future.

Per l'elenco completo delle opzioni 2.x supportate, consulta. Opzioni del driver ODBC

Modifiche al tipo di dati

La tabella seguente mostra le mappature dei tipi di dati di Amazon Redshift che sono state modificate in ODBC 2.x per conformarsi alle specifiche ODBC. La maggior parte delle applicazioni non è interessata perché associa le colonne per indice o per nome anziché per tipo di codice.

Tipi di dati di Amazon Redshift ODBC 1.x ODBC 2.x
DOUBLE PRECISION SQL_FLOAT(6) SQL_DOUBLE (8)
INTERVAL YEAR TO MONTH SQL_VARCHAR(12), testo SQL_INTERVAL_YEAR_TO_MONTH(107), struttura a intervalli
INTERVAL DAY TO SECOND SQL_VARCHAR(12), testo SQL_INTERVAL_DAY_TO_SECOND(110), struttura a intervalli
VARCHAR / CHAR / TEXT Tipi ampi (SQL_WVARCHAR,SQL_WCHAR,SQL_WLONGVARCHAR); impostazione predefinita UseUnicode=true Tipi stretti (SQL_VARCHAR,SQL_CHAR,SQL_LONGVARCHAR). Impostato UseUnicode=true per ripristinare tipi larghi.
GEOMETRY/GEOGRAPHY(asSQL_C_BINARY) Hex-encoded Stringa ASCII Byte binari non elaborati

I COLUMN_SIZE valori restituiti da sono cambiati SQLColumns anche per GEOMETRYGEOGRAPHY, e SUPER i tipi di dati, che ora restituiscono NULL per indicare colonne non dimensionate secondo la specifica ODBC. Le applicazioni che allocano i buffer in base a COLUMN_SIZE devono gestire NULL utilizzando una dimensione del buffer predefinita.

Post-migration risoluzione dei problemi

La tabella seguente descrive i problemi più comuni che potresti riscontrare dopo la migrazione e come risolverli.

Caratteristiche Causa Cosa fare
Tabelle esterne non visibili nel browser degli schemi Le tabelle Spectrum e Datashare sono riportate come EXTERNAL TABLE SQLTablesIncludi EXTERNAL TABLE nel filtro dei tipi o imposta su 0 EnableTableTypes per normalizzare i tipi di tabella dettagliati nei tipi generici TABLE e VIEW.
errori pyodbc nelle colonne di intervallo pyodbc non supporta i tipi di intervallo ODBC Trasmetti intervalli alle interrogazioni in. VARCHAR
I dati dei personaggi vengono visualizzati come caratteri inaspettati (mojibake) UseUnicodeimpostazione predefinita modificata in. false Le applicazioni che richiedono dati wide-character (UTF-16) potrebbero interpretare erroneamente i byte di caratteri stretti come coppie larghe, producendo un output confuso. I dati stessi sono invariati. Imposta UseUnicode=true nel tuo DSN o aggiorna l'applicazione per associare le colonne come SQL_C_CHAR invece di. SQL_C_WCHAR
Long-running le query restituiscono errori di timeout SQL_ATTR_QUERY_TIMEOUTè ora applicato. ODBC 1.x ha ignorato silenziosamente questa impostazione. Aumenta o rimuovi QueryTimeout dal tuo DSN o imposta SQL_ATTR_QUERY_TIMEOUT su 0 nell'applicazione.
L'impostazione ritorna SQL_ATTR_CURRENT_CATALOG HY011 L'attributo non può essere impostato su una connessione aperta. Il passaggio da un database all'altro su una connessione aperta non è supportato. Imposta l'attributo prima della connessione oppure chiudi e riapri la connessione sul database di destinazione.
La connessione si blocca in ambienti dual-stack Limitazione nelle versioni <= 2.1.16 Aggiornamento alla versione 2.1.17 o successiva.
L'analisi dei messaggi di errore restituisce risultati imprevisti Formato del messaggio modificato; codici SQLSTATE invariati Analizza i codici SQLSTATE anziché il testo del messaggio.
Data-at-execution l'associazione dei parametri si comporta diversamente SQL_NEED_LONG_DATA_LENmodificato da FALSE a TRUE; le applicazioni che utilizzano ora SQL_DATA_AT_EXEC devono fornire in anticipo la lunghezza totale dei dati Imposta il valore della lunghezza in StrLen_or_IndPtr fase di associazione SQL_DATA_AT_EXEC dei parametri.
I log dei driver non vengono generati LogLevele LogPath devono trovarsi nella sezione [ODBC] globale diodbc.ini, non nelle singole sezioni DSN Sposta le impostazioni di registrazione dal tuo DSN alla sezione. [ODBC]

Aggiornamento da una versione ODBC 2.x precedente

Se stai già utilizzando una versione ODBC 2.x precedente, esegui l'upgrade alla versione più recente. Per un elenco completo dei miglioramenti e delle correzioni di bug in tutte le versioni, consulta il log di modifica del driver ODBC di Amazon Redshift. GitHub

Ulteriori informazioni