Redshift: getting "Can't save current transaction state." error when importing .csv
Hey guys -
I'm trying to use the 'Import from File...' function to upload a flattened .csv file into a staging table on my Redshift cluster. The tool parses the file fine, but I get the error:
"Can't save current transaction state. Check connection and database settings and try again."
Happens on both Linux & Windows versions of DataGrip. Any ideas on what I'm doing wrong??
请先登录再写评论。
Hi,
Could you specify your Redshift driver and specified dialect for the driver?
Also, IDE logs could help us to find out more about the problem.
Thank you.
Hi Vasily -
I am using the JDBC 4.2–compatible driver: https://s3.amazonaws.com/redshift-downloads/drivers/RedshiftJDBC42-1.2.1.1001.jar.
The class name for this driver is
com.amazon.redshift.jdbc42.Driver. SQL dialect is Postgres (as that's what AWS Redshift utilizes)I downloaded it from here: http://docs.aws.amazon.com/redshift/latest/mgmt/configure-jdbc-connection.html
In my log file (idea.log), I see the following (emphasis bold):
2017-02-13 11:16:14,529 [610001595] INFO - ase.dataSource.LocalDataSource - Connecting as: raybao
2017-02-13 11:16:14,529 [610001595] INFO - ase.dataSource.LocalDataSource - Connecting to: jdbc:redshift://tesoro-bim-prod.ckqxejo07x0g.us-east-1.redshift.amazonaws.com:8195/tesorobim?tcpKeepAlive=true&TCPKeepAliveMinutes=5
2017-02-13 11:16:14,594 [610001660] INFO - .diagnostic.PerformanceWatcher - Pushing properties took 1ms; general responsiveness: ok; EDT responsiveness: ok
2017-02-13 11:16:14,595 [610001661] INFO - .diagnostic.PerformanceWatcher - Indexable file iteration took 1ms; general responsiveness: ok; EDT responsiveness: ok
2017-02-13 11:16:21,367 [610008433] WARN - AbstractTransactionStateHolder - Batches: 0
2017-02-13 11:16:21,367 [610008433] WARN - AbstractTransactionStateHolder - Can't save current transaction state. Check connection and database settings and try again
2017-02-13 11:16:21,367 [610008433] WARN - AbstractTransactionStateHolder - [Amazon][JDBC](11700) Cannot set Savepoint while Connection is in auto-commit mode.
java.sql.SQLException: [Amazon][JDBC](11700) Cannot set Savepoint while Connection is in auto-commit mode.
at com.amazon.exceptions.ExceptionConverter.toSQLException(Unknown Source)
at com.amazon.jdbc.common.SConnection.setSavepoint(Unknown Source)
at com.intellij.database.remote.jdbc.impl.RemoteConnectionImpl.setSavepoint(RemoteConnectionImpl.java:348)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:324)
at sun.rmi.transport.Transport$1.run(Transport.java:200)
at sun.rmi.transport.Transport$1.run(Transport.java:197)
at java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.Transport.serviceCall(Transport.java:196)
at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:568)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:826)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(TCPTransport.java:683)
at java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:682)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteCall.java:276)
at sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:253)
at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:162)
at java.rmi.server.RemoteObjectInvocationHandler.invokeRemoteMethod(RemoteObjectInvocationHandler.java:227)
at java.rmi.server.RemoteObjectInvocationHandler.invoke(RemoteObjectInvocationHandler.java:179)
at com.sun.proxy.$Proxy95.setSavepoint(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.intellij.execution.rmi.RemoteUtil.invokeRemote(RemoteUtil.java:169)
at com.intellij.execution.rmi.RemoteUtil.access$300(RemoteUtil.java:36)
at com.intellij.execution.rmi.RemoteUtil$RemoteInvocationHandler.invoke(RemoteUtil.java:274)
at com.sun.proxy.$Proxy96.setSavepoint(Unknown Source)
at com.intellij.database.dbimport.state.AbstractTransactionStateHolder$1.run(AbstractTransactionStateHolder.java:79)
at com.intellij.database.dbimport.state.AbstractTransactionStateHolder.run(AbstractTransactionStateHolder.java:128)
at com.intellij.database.dbimport.state.AbstractTransactionStateHolder.checkoutLastState(AbstractTransactionStateHolder.java:76)
at com.intellij.database.dbimport.state.DefaultTransactionStateHolder.executed(DefaultTransactionStateHolder.java:20)
at com.intellij.database.dbimport.PreparedQuery.statementCompleted(PreparedQuery.java:30)
at com.intellij.database.dbimport.QueryWithParameters.execute(QueryWithParameters.java:51)
at com.intellij.database.dbimport.PreparedQuery.execute(PreparedQuery.java:14)
at com.intellij.database.dbimport.ImportDatabaseModifier$ImportExecutor.execute(ImportDatabaseModifier.java:103)
at com.intellij.database.view.AbstractDatabaseModifier$1.run(AbstractDatabaseModifier.java:103)
at com.intellij.openapi.progress.impl.CoreProgressManager$TaskRunnable.run(CoreProgressManager.java:710)
at com.intellij.openapi.progress.impl.CoreProgressManager$3.run(CoreProgressManager.java:179)
at com.intellij.openapi.progress.impl.CoreProgressManager.a(CoreProgressManager.java:568)
at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:519)
at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:54)
at com.intellij.openapi.progress.impl.CoreProgressManager.runProcess(CoreProgressManager.java:164)
at com.intellij.openapi.progress.impl.ProgressManagerImpl$1.run(ProgressManagerImpl.java:128)
at com.intellij.openapi.application.impl.ApplicationImpl$2.run(ApplicationImpl.java:309)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
However, I tried disabling the check-box for "auto-commit" in my connection properties and I'm still faced with the same issue. Any ideas?
Hi,
It seems to be fixed in DataGrip 2017.1 EAP. Could you try to reproduce the problem in EAP?
Thank you.
I'm having the same error using DataGrip 2017.3.3
DataGrip 2017.3.3
Build #DB-173.4127.18, built on December 19, 2017
Licensed to ****************************
Subscription is active until November 15, 2018
JRE: 1.8.0_152-release-1024-b8 amd64
JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o
Windows 7 6.1
Same process in pgAdmin works without a problem:
@ Theraybao Hi,
Could you create Redshift specific data source https://blog.jetbrains.com/datagrip/2017/07/27/datagrip-2017-2-released/#newdbms and check it again?
Could you provide sample table DDL and sample csv file to reproduce the problem?
Thank you.