Changing the default Java TimeZone does not work with createConnectionForPool
9 views (last 30 days)
Show older comments
The problem is described as follows:
(1) I change the default Java TimeZone within MATLAB using the following command
java.util.TimeZone.setDefault(java.util.TimeZone.getTimeZone('UTC'));
(2) I initialize a parallel pool with JDBC Database Connection
c = createConnectionForPool( gcp , datasource , username , password )
(3) I run a parfor loop with fetch queries
parfor i = 1 : i_max
allresults{i} = fetch(c.Value,sqlqueries(i));
end
(4) The problem is that the time-data that i am fetching arrive with local TimeZone and not UTC as specified in step (1).
Step (1) is necessary for my script to overcome the issue described here:
Could you please assist me with the above?
0 Comments
Answers (2)
Andrew Janke
on 31 Jan 2020
Each of the workers in the Parallel Pool is a separate process with its own separate JVM. You need to run that java.util.TimeZone.setDefault(java.util.TimeZone.getTimeZone('UTC')); in each of your workers, and not just in your base Matlab session.
0 Comments
Allan Brett
on 11 Apr 2023
Edited: Allan Brett
on 11 Apr 2023
For anyone coming here because of the issue discussed here (https://www.mathworks.com/matlabcentral/answers/1468926-why-do-i-get-the-following-jdbc-driver-error-the-server-time-zone-value-cdt-is-unrecognized-or-r), but running into an issue with parallel pool database connections (createConnectionForPool). You need to manually set the connection options.
datasource = "some_source";
opts = databaseConnectionOptions(datasource);
opts = setoptions(opts,'URL','jdbc:mysql://127.0.0.1:3306/yoursever?serverTimezone='yourtimezonehere'');
saveAsDataSource(opts)
0 Comments
See Also
Categories
Find more on Introduction to Installation and Licensing in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!