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
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=truese l'applicazione dipende da codici a caratteri larghi (SQL_WVARCHAR,SQL_WCHAR). Nel driver ODBC 2.x, ilUseUnicodevalore predefinito èfalse, che riporta i tipi di caratteri ristretti. -
Sposta le impostazioni di registrazione nella sezione.
[ODBC]Su Linux e macOSLogLeveleLogPathdeve essere impostato nella[ODBC]sezione globale diodbc.ini, non in una singola sezione DSN.
Interrogazione e schema
-
SQLTablesIncludiEXTERNAL TABLEnei filtri di tipo. In ODBC 2.x, sia le tabelle Amazon Redshift Spectrum che le tabelle datashare sono riportate come.EXTERNAL TABLESe filtri per tipo, aggiungiSQLTablesper continuareEXTERNAL TABLEa 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,SQLTablesriporta 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 suEnableTableTypes0. -
Trasmetti
INTERVALaVARCHARper 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_TIMEOUTbase 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_LENcomeY(1.x riportato).NLe applicazioni che associanoSQL_DATA_AT_EXECi 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, usaStreamingCursorRowsinvece. -
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.TrustStoreCaFile -
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.