Struct mysql::OptsBuilder
source · pub struct OptsBuilder { /* private fields */ }
Expand description
Provides a way to build Opts
.
let mut ssl_opts = SslOpts::default();
ssl_opts = ssl_opts.with_pkcs12_path(Some(Path::new("/foo/cert.p12")))
.with_root_ca_path(Some(Path::new("/foo/root_ca.der")));
// You can create new default builder
let mut builder = OptsBuilder::new();
builder = builder.ip_or_hostname(Some("foo"))
.db_name(Some("bar"))
.ssl_opts(Some(ssl_opts));
// Or use existing T: Into<Opts>
let builder = OptsBuilder::from_opts(existing_opts)
.ip_or_hostname(Some("foo"))
.db_name(Some("bar"));
Connection URL
Opts
also could be constructed using connection URL. See docs on OptsBuilder
’s methods for
the list of options available via URL.
Example:
let connection_opts = mysql::Opts::from_url("mysql://root:password@localhost:3307/mysql?prefer_socket=false").unwrap();
let pool = mysql::Pool::new(connection_opts).unwrap();
Implementations§
source§impl OptsBuilder
impl OptsBuilder
pub fn new() -> Self
pub fn from_opts<T: Into<Opts>>(opts: T) -> Self
sourcepub fn from_hash_map(
self,
client: &HashMap<String, String>
) -> Result<Self, UrlError>
pub fn from_hash_map(
self,
client: &HashMap<String, String>
) -> Result<Self, UrlError>
Use a HashMap for creating an OptsBuilder instance:
OptsBuilder::new().from_hash_map(client);
HashMap
key,value pairs:
- user = Username
- password = Password
- host = Host name or ip address
- port = Port, default is 3306
- socket = Unix socket or pipe name(on windows) defaults to
None
- db_name = Database name (defaults to
None
). - prefer_socket = Prefer socket connection (defaults to
true
) - tcp_keepalive_time_ms = TCP keep alive time for mysql connection (defaults to
None
) - tcp_keepalive_probe_interval_secs = TCP keep alive interval between probes for mysql connection (defaults to
None
) - tcp_keepalive_probe_count = TCP keep alive probe count for mysql connection (defaults to
None
) - tcp_user_timeout_ms = TCP_USER_TIMEOUT time for mysql connection (defaults to
None
) - compress = Compression level(defaults to
None
) - tcp_connect_timeout_ms = Tcp connect timeout (defaults to
None
) - stmt_cache_size = Number of prepared statements cached on the client side (per connection)
- secure_auth = Disable
mysql_old_password
auth plugin
Login .cnf file parsing lib https://github.com/rjcortese/myloginrs returns a HashMap for client configs
Note: You do not have to use myloginrs lib.
sourcepub fn ip_or_hostname<T: Into<String>>(self, ip_or_hostname: Option<T>) -> Self
pub fn ip_or_hostname<T: Into<String>>(self, ip_or_hostname: Option<T>) -> Self
Address of mysql server (defaults to 127.0.0.1
). Hostnames should also work.
Note: IPv6 addresses must be given in square brackets, e.g. [::1]
.
sourcepub fn socket<T: Into<String>>(self, socket: Option<T>) -> Self
pub fn socket<T: Into<String>>(self, socket: Option<T>) -> Self
Socket path on unix or pipe name on windows (defaults to None
).
Can be defined using socket
connection url parameter.
sourcepub fn db_name<T: Into<String>>(self, db_name: Option<T>) -> Self
pub fn db_name<T: Into<String>>(self, db_name: Option<T>) -> Self
Database name (defaults to None
).
sourcepub fn read_timeout(self, read_timeout: Option<Duration>) -> Self
pub fn read_timeout(self, read_timeout: Option<Duration>) -> Self
The timeout for each attempt to read from the server (defaults to None
).
Note that named pipe connection will ignore duration’s nanos
, and also note that
it is an error to pass the zero Duration
to this method.
sourcepub fn write_timeout(self, write_timeout: Option<Duration>) -> Self
pub fn write_timeout(self, write_timeout: Option<Duration>) -> Self
The timeout for each attempt to write to the server (defaults to None
).
Note that named pipe connection will ignore duration’s nanos
, and also note that
it is likely error to pass the zero Duration
to this method.
sourcepub fn tcp_keepalive_time_ms(self, tcp_keepalive_time_ms: Option<u32>) -> Self
pub fn tcp_keepalive_time_ms(self, tcp_keepalive_time_ms: Option<u32>) -> Self
TCP keep alive time for mysql connection (defaults to None
). Available as
tcp_keepalive_time_ms
url parameter.
Can be defined using tcp_keepalive_time_ms
connection url parameter.
sourcepub fn tcp_keepalive_probe_interval_secs(
self,
tcp_keepalive_probe_interval_secs: Option<u32>
) -> Self
pub fn tcp_keepalive_probe_interval_secs(
self,
tcp_keepalive_probe_interval_secs: Option<u32>
) -> Self
TCP keep alive interval between probes for mysql connection (defaults to None
). Available as
tcp_keepalive_probe_interval_secs
url parameter.
Can be defined using tcp_keepalive_probe_interval_secs
connection url parameter.
sourcepub fn tcp_keepalive_probe_count(
self,
tcp_keepalive_probe_count: Option<u32>
) -> Self
pub fn tcp_keepalive_probe_count(
self,
tcp_keepalive_probe_count: Option<u32>
) -> Self
TCP keep alive probe count for mysql connection (defaults to None
). Available as
tcp_keepalive_probe_count
url parameter.
Can be defined using tcp_keepalive_probe_count
connection url parameter.
sourcepub fn tcp_user_timeout_ms(self, tcp_user_timeout_ms: Option<u32>) -> Self
pub fn tcp_user_timeout_ms(self, tcp_user_timeout_ms: Option<u32>) -> Self
TCP_USER_TIMEOUT for mysql connection (defaults to None
). Available as
tcp_user_timeout_ms
url parameter.
Can be defined using tcp_user_timeout_ms
connection url parameter.
sourcepub fn tcp_nodelay(self, nodelay: bool) -> Self
pub fn tcp_nodelay(self, nodelay: bool) -> Self
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.
sourcepub fn prefer_socket(self, prefer_socket: bool) -> Self
pub fn prefer_socket(self, prefer_socket: bool) -> Self
Prefer socket connection (defaults to true
). Available as prefer_socket
url parameter
with value true
or false
.
Will reconnect via socket (on 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.
Can be defined using prefer_socket
connection url parameter.
sourcepub fn init<T: Into<String>>(self, init: Vec<T>) -> Self
pub fn init<T: Into<String>>(self, init: Vec<T>) -> Self
Commands to execute on each new database connection.
sourcepub fn ssl_opts<T: Into<Option<SslOpts>>>(self, ssl_opts: T) -> Self
pub fn ssl_opts<T: Into<Option<SslOpts>>>(self, ssl_opts: T) -> Self
Driver will require SSL connection if this option isn’t None
(default to None
).
sourcepub fn local_infile_handler(self, handler: Option<LocalInfileHandler>) -> Self
pub fn local_infile_handler(self, handler: Option<LocalInfileHandler>) -> Self
Callback to handle requests for local files. These are
caused by using LOAD DATA LOCAL INFILE
queries. The
callback is passed the filename, and a Write
able object
to receive the contents of that file.
If unset, the default callback will read files relative to
the current directory.
sourcepub fn tcp_connect_timeout(self, timeout: Option<Duration>) -> Self
pub fn tcp_connect_timeout(self, timeout: Option<Duration>) -> Self
Tcp connect timeout (defaults to None
). Available as tcp_connect_timeout_ms
url parameter.
Can be defined using tcp_connect_timeout_ms
connection url parameter.
sourcepub fn bind_address<T>(self, bind_address: Option<T>) -> Selfwhere
T: Into<SocketAddr>,
pub fn bind_address<T>(self, bind_address: Option<T>) -> Selfwhere
T: Into<SocketAddr>,
Bind address for a client (defaults to None
).
Use carefully. Will probably make pool unusable because of address already in use errors.
sourcepub fn stmt_cache_size<T>(self, cache_size: T) -> Selfwhere
T: Into<Option<usize>>,
pub fn stmt_cache_size<T>(self, cache_size: T) -> Selfwhere
T: Into<Option<usize>>,
Number of prepared statements cached on the client side (per connection).
Defaults to DEFAULT_STMT_CACHE_SIZE
.
Can be defined using stmt_cache_size
connection url parameter.
Call with None
to reset to default.
sourcepub fn compress(self, compress: Option<Compression>) -> Self
pub fn compress(self, compress: Option<Compression>) -> Self
If not None
, then client will ask for compression if server supports it
(defaults to None
).
Can be defined using compress
connection url parameter with values:
true
- library defined default compression level;fast
- library defined fast compression level;best
- library defined best compression level;0
,1
, …,9
- explicitly defined compression level where0
stands for “no compression”;
Note that compression level defined here will affect only outgoing packets.
sourcepub fn additional_capabilities(
self,
additional_capabilities: CapabilityFlags
) -> Self
pub fn additional_capabilities(
self,
additional_capabilities: CapabilityFlags
) -> Self
Additional client capabilities to set (defaults to empty).
This value will be OR’ed with other client capabilities during connection initialisation.
Note
It is a good way to set something like CLIENT_FOUND_ROWS
but you should note that it
won’t let you to interfere with capabilities managed by other options (like
CLIENT_SSL
or CLIENT_COMPRESS
). Also note that some capabilities are reserved,
pointless or may broke the connection, so this option should be used with caution.
sourcepub fn connect_attrs<T1: Into<String> + Eq + Hash, T2: Into<String>>(
self,
connect_attrs: HashMap<T1, T2>
) -> Self
pub fn connect_attrs<T1: Into<String> + Eq + Hash, T2: Into<String>>(
self,
connect_attrs: HashMap<T1, T2>
) -> Self
Connect attributes
This value is sent to the server as custom name-value attributes.
You can see them from performance_schema tables: session_account_connect_attrs
and session_connect_attrs
when all of the following conditions
are met.
- The server is MySQL 5.6 or later, or MariaDB 10.0 or later.
performance_schema
is on.performance_schema_session_connect_attrs_size
is -1 or big enough to store specified attributes.
Note
Attribute names that begin with an underscore (_
) are not set by
application programs because they are reserved for internal use.
The following attributes are sent in addition to ones set by programs.
name | value |
---|---|
_client_name | The client library name (rust-mysql-simple ) |
_client_version | The client library version |
_os | The operation system (target_os cfg feature) |
_pid | The client process ID |
_platform | The machine platform (target_arch cfg feature) |
program_name | The first element of std::env::args if program_name isn’t set by programs. |
sourcepub fn secure_auth(self, secure_auth: bool) -> Self
pub fn secure_auth(self, secure_auth: bool) -> Self
Disables mysql_old_password
plugin (defaults to true
).
Available via secure_auth
connection url parameter.
Trait Implementations§
source§impl Clone for OptsBuilder
impl Clone for OptsBuilder
source§fn clone(&self) -> OptsBuilder
fn clone(&self) -> OptsBuilder
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl Debug for OptsBuilder
impl Debug for OptsBuilder
source§impl Default for OptsBuilder
impl Default for OptsBuilder
source§fn default() -> OptsBuilder
fn default() -> OptsBuilder
source§impl From<OptsBuilder> for Opts
impl From<OptsBuilder> for Opts
source§fn from(builder: OptsBuilder) -> Opts
fn from(builder: OptsBuilder) -> Opts
source§impl PartialEq<OptsBuilder> for OptsBuilder
impl PartialEq<OptsBuilder> for OptsBuilder
source§fn eq(&self, other: &OptsBuilder) -> bool
fn eq(&self, other: &OptsBuilder) -> bool
self
and other
values to be equal, and is used
by ==
.impl StructuralPartialEq for OptsBuilder
Auto Trait Implementations§
impl RefUnwindSafe for OptsBuilder
impl Send for OptsBuilder
impl Sync for OptsBuilder
impl Unpin for OptsBuilder
impl UnwindSafe for OptsBuilder
Blanket Implementations§
§impl<T> Conv for T
impl<T> Conv for T
§impl<Choices> CoproductSubsetter<CNil, HNil> for Choices
impl<Choices> CoproductSubsetter<CNil, HNil> for Choices
§impl<T> FmtForward for T
impl<T> FmtForward for T
§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.§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.§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.§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.§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.§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.§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.§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.§fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
§impl<T, U, I> LiftInto<U, I> for Twhere
U: LiftFrom<T, I>,
impl<T, U, I> LiftInto<U, I> for Twhere
U: LiftFrom<T, I>,
§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
§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 more§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 more§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> Rwhere
Self: Borrow<B>,
B: 'a + ?Sized,
R: 'a,
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> Rwhere
Self: Borrow<B>,
B: 'a + ?Sized,
R: 'a,
§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R
) -> Rwhere
Self: BorrowMut<B>,
B: 'a + ?Sized,
R: 'a,
fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R
) -> Rwhere
Self: BorrowMut<B>,
B: 'a + ?Sized,
R: 'a,
§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> Rwhere
Self: AsRef<U>,
U: 'a + ?Sized,
R: 'a,
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> Rwhere
Self: AsRef<U>,
U: 'a + ?Sized,
R: 'a,
self
, then passes self.as_ref()
into the pipe function.§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> Rwhere
Self: AsMut<U>,
U: 'a + ?Sized,
R: 'a,
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> Rwhere
Self: AsMut<U>,
U: 'a + ?Sized,
R: 'a,
self
, then passes self.as_mut()
into the pipe
function.§impl<T> Pointable for T
impl<T> Pointable for T
§impl<Source> Sculptor<HNil, HNil> for Source
impl<Source> Sculptor<HNil, HNil> for Source
§impl<T> Tap for T
impl<T> Tap for T
§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Selfwhere
Self: Borrow<B>,
B: ?Sized,
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Selfwhere
Self: Borrow<B>,
B: ?Sized,
Borrow<B>
of a value. Read more§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Selfwhere
Self: BorrowMut<B>,
B: ?Sized,
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Selfwhere
Self: BorrowMut<B>,
B: ?Sized,
BorrowMut<B>
of a value. Read more§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Selfwhere
Self: AsRef<R>,
R: ?Sized,
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Selfwhere
Self: AsRef<R>,
R: ?Sized,
AsRef<R>
view of a value. Read more§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Selfwhere
Self: AsMut<R>,
R: ?Sized,
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Selfwhere
Self: AsMut<R>,
R: ?Sized,
AsMut<R>
view of a value. Read more§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Selfwhere
Self: Deref<Target = T>,
T: ?Sized,
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Selfwhere
Self: Deref<Target = T>,
T: ?Sized,
Deref::Target
of a value. Read more§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Selfwhere
Self: DerefMut<Target = T> + Deref,
T: ?Sized,
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Selfwhere
Self: DerefMut<Target = T> + Deref,
T: ?Sized,
Deref::Target
of a value. Read more§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.§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.§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Selfwhere
Self: Borrow<B>,
B: ?Sized,
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Selfwhere
Self: Borrow<B>,
B: ?Sized,
.tap_borrow()
only in debug builds, and is erased in release
builds.§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Selfwhere
Self: BorrowMut<B>,
B: ?Sized,
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Selfwhere
Self: BorrowMut<B>,
B: ?Sized,
.tap_borrow_mut()
only in debug builds, and is erased in release
builds.§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Selfwhere
Self: AsRef<R>,
R: ?Sized,
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Selfwhere
Self: AsRef<R>,
R: ?Sized,
.tap_ref()
only in debug builds, and is erased in release
builds.§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Selfwhere
Self: AsMut<R>,
R: ?Sized,
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Selfwhere
Self: AsMut<R>,
R: ?Sized,
.tap_ref_mut()
only in debug builds, and is erased in release
builds.