pub struct Opts { /* private fields */ }Expand description
Mysql connection options.
Build one with OptsBuilder.
Implementations§
Source§impl Opts
impl Opts
pub fn from_url(url: &str) -> Result<Opts, UrlError>
Sourcepub fn ip_or_hostname(&self) -> &str
pub fn ip_or_hostname(&self) -> &str
Address of mysql server (defaults to 127.0.0.1). Hostnames should also work.
Sourcepub fn resolved_ips(&self) -> &Option<Vec<IpAddr>>
pub fn resolved_ips(&self) -> &Option<Vec<IpAddr>>
The resolved IPs for the mysql server, if provided.
Sourcepub fn user(&self) -> Option<&str>
pub fn user(&self) -> Option<&str>
User (defaults to None).
§Connection URL
Can be defined in connection URL. E.g.
let opts = Opts::from_url("mysql://user@localhost/database_name")?;
assert_eq!(opts.user(), Some("user"));Sourcepub fn pass(&self) -> Option<&str>
pub fn pass(&self) -> Option<&str>
Password (defaults to None).
§Connection URL
Can be defined in connection URL. E.g.
let opts = Opts::from_url("mysql://user:pass%20word@localhost/database_name")?;
assert_eq!(opts.pass(), Some("pass word"));Sourcepub fn db_name(&self) -> Option<&str>
pub fn db_name(&self) -> Option<&str>
Database name (defaults to None).
§Connection URL
Database name can be defined in connection URL. E.g.
let opts = Opts::from_url("mysql://localhost/database_name")?;
assert_eq!(opts.db_name(), Some("database_name"));Sourcepub fn setup(&self) -> &[String]
pub fn setup(&self) -> &[String]
Commands to execute on new connection and every time
Conn::reset or Conn::change_user is invoked.
Sourcepub fn tcp_keepalive(&self) -> Option<u32>
pub fn tcp_keepalive(&self) -> Option<u32>
TCP keep alive timeout in milliseconds (defaults to None).
§Connection URL
You can use tcp_keepalive URL parameter to set this value (in milliseconds). E.g.
let opts = Opts::from_url("mysql://localhost/db?tcp_keepalive=10000")?;
assert_eq!(opts.tcp_keepalive(), Some(10_000));Sourcepub fn tcp_nodelay(&self) -> bool
pub fn tcp_nodelay(&self) -> bool
Set the TCP_NODELAY option for the mysql connection (defaults to true).
Setting this option to false re-enables Nagle’s algorithm, which can cause unusually high latency (~40ms) but may increase maximum throughput. See #132.
§Connection URL
You can use tcp_nodelay URL parameter to set this value. E.g.
let opts = Opts::from_url("mysql://localhost/db?tcp_nodelay=false")?;
assert_eq!(opts.tcp_nodelay(), false);Sourcepub fn local_infile_handler(&self) -> Option<Arc<dyn GlobalHandler>>
pub fn local_infile_handler(&self) -> Option<Arc<dyn GlobalHandler>>
Handler for local infile requests (defaults to None).
Sourcepub fn pool_opts(&self) -> &PoolOpts
pub fn pool_opts(&self) -> &PoolOpts
Connection pool options (defaults to Default::default).
Sourcepub fn conn_ttl(&self) -> Option<Duration>
pub fn conn_ttl(&self) -> Option<Duration>
Pool will close connection if time since last IO exceeds this number of seconds
(defaults to wait_timeout. None to reset to default).
§Connection URL
You can use conn_ttl URL parameter to set this value (in seconds). E.g.
let opts = Opts::from_url("mysql://localhost/db?conn_ttl=360")?;
assert_eq!(opts.conn_ttl(), Some(Duration::from_secs(360)));Sourcepub fn abs_conn_ttl(&self) -> Option<Duration>
pub fn abs_conn_ttl(&self) -> Option<Duration>
The pool will close a connection when this absolute TTL has elapsed. Disabled by default.
Enables forced recycling and migration of connections in a guaranteed timeframe. This TTL bypasses pool constraints and an idle pool can go below the min size.
§Connection URL
You can use abs_conn_ttl URL parameter to set this value (in seconds). E.g.
let opts = Opts::from_url("mysql://localhost/db?abs_conn_ttl=86400")?;
assert_eq!(opts.abs_conn_ttl(), Some(Duration::from_secs(24 * 60 * 60)));Sourcepub fn abs_conn_ttl_jitter(&self) -> Option<Duration>
pub fn abs_conn_ttl_jitter(&self) -> Option<Duration>
Upper bound of a random value added to the absolute TTL, if enabled. Disabled by default.
Should be used to prevent connections from closing at the same time.
§Connection URL
You can use abs_conn_ttl_jitter URL parameter to set this value (in seconds). E.g.
let opts = Opts::from_url("mysql://localhost/db?abs_conn_ttl=7200&abs_conn_ttl_jitter=3600")?;
assert_eq!(opts.abs_conn_ttl_jitter(), Some(Duration::from_secs(60 * 60)));Sourcepub fn stmt_cache_size(&self) -> usize
pub fn stmt_cache_size(&self) -> usize
Number of prepared statements cached on the client side (per connection). Defaults to
DEFAULT_STMT_CACHE_SIZE.
Call with None to reset to default. Set to 0 to disable statement cache.
§Caveats
If statement cache is disabled (stmt_cache_size is 0), then you must close statements
manually.
§Connection URL
You can use stmt_cache_size URL parameter to set this value. E.g.
let opts = Opts::from_url("mysql://localhost/db?stmt_cache_size=128")?;
assert_eq!(opts.stmt_cache_size(), 128);Sourcepub fn ssl_opts(&self) -> Option<&SslOpts>
pub fn ssl_opts(&self) -> Option<&SslOpts>
Driver will require SSL connection if this opts isn’t None (defaults to None).
§Connection URL parameters
Note that for securty reasons:
- CA and IDENTITY verifications are opt-out
- there is no way to give an idenity or root certs via query URL
URL Parameters:
require_ssl: bool(defaults tofalse) – requires SSL with defaultSslOptsverify_ca: bool(defaults totrue) – requires server Certificate Authority (CA) certificate validation against the configured CA certificates. Makes no sence ifrequire_sslequalsfalse.verify_identity: bool(defaults totrue) – perform host name identity verification by checking the host name the client uses for connecting to the server against the identity in the certificate that the server sends to the client. Makes no sence ifrequire_sslequalsfalse.
Sourcepub fn prefer_socket(&self) -> bool
pub fn prefer_socket(&self) -> bool
Prefer socket connection (defaults to true temporary false on Windows platform).
Will reconnect via socket (or named pipe on Windows) after TCP connection to 127.0.0.1
if true.
Will fall back to TCP on error. Use socket option to enforce socket connection.
§Note
Library will query the @@socket server variable to get socket address,
and this address may be incorrect in some cases (e.g. docker).
§Connection URL
You can use prefer_socket URL parameter to set this value. E.g.
let opts = Opts::from_url("mysql://localhost/db?prefer_socket=false")?;
assert_eq!(opts.prefer_socket(), false);Sourcepub fn socket(&self) -> Option<&str>
pub fn socket(&self) -> Option<&str>
Path to unix socket (or named pipe on Windows) (defaults to None).
§Connection URL
You can use socket URL parameter to set this value. E.g.
let opts = Opts::from_url("mysql://localhost/db?socket=%2Fpath%2Fto%2Fsocket")?;
assert_eq!(opts.socket(), Some("/path/to/socket"));Sourcepub fn compression(&self) -> Option<Compression>
pub fn compression(&self) -> Option<Compression>
If not None, then client will ask for compression if server supports it
(defaults to None).
§Connection URL
You can use compression URL parameter to set this value:
fast- for compression level 1;best- for compression level 9;on,true- for default compression level;0, …,9.
Note that compression level defined here will affect only outgoing packets.
Sourcepub fn max_allowed_packet(&self) -> Option<usize>
pub fn max_allowed_packet(&self) -> Option<usize>
Client side max_allowed_packet value (defaults to None).
By default Conn will query this value from the server. One can avoid this step
by explicitly specifying it. Server side default is 4MB.
Available in connection URL via max_allowed_packet parameter.
Sourcepub fn wait_timeout(&self) -> Option<usize>
pub fn wait_timeout(&self) -> Option<usize>
Client side wait_timeout value (defaults to None).
By default Conn will query this value from the server. One can avoid this step
by explicitly specifying it. Server side default is 28800.
Available in connection URL via wait_timeout parameter.
Sourcepub fn secure_auth(&self) -> bool
pub fn secure_auth(&self) -> bool
Disables mysql_old_password plugin (defaults to true).
Available via secure_auth connection url parameter.
Sourcepub fn client_found_rows(&self) -> bool
pub fn client_found_rows(&self) -> bool
Returns true if CLIENT_FOUND_ROWS capability is enabled (defaults to false).
CLIENT_FOUND_ROWS changes the behavior of the affected count returned for writes
(UPDATE/INSERT etc). It makes MySQL return the FOUND rows instead of the AFFECTED rows.
§Connection URL
Use client_found_rows URL parameter to set this value. E.g.
let opts = Opts::from_url("mysql://localhost/db?client_found_rows=true")?;
assert!(opts.client_found_rows());Sourcepub fn enable_cleartext_plugin(&self) -> bool
pub fn enable_cleartext_plugin(&self) -> bool
Returns true if mysql_clear_password plugin support is enabled (defaults to false).
mysql_clear_password enables client to send passwords to the server as cleartext, without
hashing or encryption (consult MySql documentation for more info).
§Security Notes
Sending passwords as cleartext may be a security problem in some configurations. Please consider using TLS or encrypted tunnels for server connection.
§Connection URL
Use enable_cleartext_plugin URL parameter to set this value. E.g.
let opts = Opts::from_url("mysql://localhost/db?enable_cleartext_plugin=true")?;
assert!(opts.enable_cleartext_plugin());Trait Implementations§
Source§impl From<OptsBuilder> for Opts
impl From<OptsBuilder> for Opts
Source§fn from(builder: OptsBuilder) -> Opts
fn from(builder: OptsBuilder) -> Opts
impl Eq for Opts
impl StructuralPartialEq for Opts
Auto Trait Implementations§
impl Freeze for Opts
impl !RefUnwindSafe for Opts
impl Send for Opts
impl Sync for Opts
impl Unpin for Opts
impl !UnwindSafe for Opts
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.Source§impl<T> FmtForward for T
impl<T> FmtForward for T
Source§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self to use its Binary implementation when Debug-formatted.Source§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self to use its Display implementation when
Debug-formatted.Source§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self to use its LowerExp implementation when
Debug-formatted.Source§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self to use its LowerHex implementation when
Debug-formatted.Source§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self to use its Octal implementation when Debug-formatted.Source§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self to use its Pointer implementation when
Debug-formatted.Source§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self to use its UpperExp implementation when
Debug-formatted.Source§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self to use its UpperHex implementation when
Debug-formatted.Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
Source§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
Source§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read moreSource§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read moreSource§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
Source§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
Source§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self, then passes self.as_ref() into the pipe function.Source§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self, then passes self.as_mut() into the pipe
function.Source§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self, then passes self.deref() into the pipe function.Source§impl<T> Tap for T
impl<T> Tap for T
Source§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B> of a value. Read moreSource§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B> of a value. Read moreSource§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R> view of a value. Read moreSource§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R> view of a value. Read moreSource§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target of a value. Read moreSource§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target of a value. Read moreSource§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap() only in debug builds, and is erased in release builds.Source§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut() only in debug builds, and is erased in release
builds.Source§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow() only in debug builds, and is erased in release
builds.Source§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut() only in debug builds, and is erased in release
builds.Source§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref() only in debug builds, and is erased in release
builds.Source§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut() only in debug builds, and is erased in release
builds.Source§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref() only in debug builds, and is erased in release
builds.