pub struct MysqlConnection { /* private fields */ }mysql and mysql_backend only.Expand description
A connection to a MySQL database. Connection URLs should be in the form
mysql://[user[:password]@]host/database_name[?unix_socket=socket-path&ssl_mode=SSL_MODE*&ssl_ca=/etc/ssl/certs/ca-certificates.crt&ssl_cert=/etc/ssl/certs/client-cert.crt&ssl_key=/etc/ssl/certs/client-key.crt]
- hostcan be an IP address or a hostname. If it is set to- localhost, a connection will be attempted through the socket at- /tmp/mysql.sock. If you want to connect to a local server via TCP (e.g. docker containers), use- 0.0.0.0or- 127.0.0.1instead.
- unix_socketexpects the path to the unix socket
- ssl_caaccepts a path to the system’s certificate roots
- ssl_certaccepts a path to the client’s certificate file
- ssl_keyaccepts a path to the client’s private key file
- ssl_modeexpects a value defined for MySQL client command option- --ssl-modeSee https://dev.mysql.com/doc/refman/5.7/en/connection-options.html#option_general_ssl-mode
§Supported loading model implementations
As MysqlConnection only supports a single loading mode implementation
it is not required to explicitly specify a loading mode
when calling RunQueryDsl::load_iter() or LoadConnection::load
§DefaultLoadingMode
MysqlConnection only supports a single loading mode, which loads
values row by row from the result set.
use diesel::connection::DefaultLoadingMode;
{ // scope to restrict the lifetime of the iterator
    let iter1 = users::table.load_iter::<(i32, String), DefaultLoadingMode>(connection)?;
    for r in iter1 {
        let (id, name) = r?;
        println!("Id: {} Name: {}", id, name);
    }
}
// works without specifying the loading mode
let iter2 = users::table.load_iter::<(i32, String), _>(connection)?;
for r in iter2 {
    let (id, name) = r?;
    println!("Id: {} Name: {}", id, name);
}This mode does not support creating multiple iterators using the same connection.
use diesel::connection::DefaultLoadingMode;
let iter1 = users::table.load_iter::<(i32, String), DefaultLoadingMode>(connection)?;
let iter2 = users::table.load_iter::<(i32, String), DefaultLoadingMode>(connection)?;
for r in iter1 {
    let (id, name) = r?;
    println!("Id: {} Name: {}", id, name);
}
for r in iter2 {
    let (id, name) = r?;
    println!("Id: {} Name: {}", id, name);
}Trait Implementations§
Source§impl Connection for MysqlConnection
 
impl Connection for MysqlConnection
Source§fn establish(database_url: &str) -> ConnectionResult<Self>
 
fn establish(database_url: &str) -> ConnectionResult<Self>
Establishes a new connection to the MySQL database
database_url may be enhanced by GET parameters
mysql://[user[:password]@]host[:port]/database_name[?unix_socket=socket-path&ssl_mode=SSL_MODE*&ssl_ca=/etc/ssl/certs/ca-certificates.crt&ssl_cert=/etc/ssl/certs/client-cert.crt&ssl_key=/etc/ssl/certs/client-key.crt]
- hostcan be an IP address or a hostname. If it is set to- localhost, a connection will be attempted through the socket at- /tmp/mysql.sock. If you want to connect to a local server via TCP (e.g. docker containers), use- 0.0.0.0or- 127.0.0.1instead.
- unix_socketexpects the path to the unix socket
- ssl_caaccepts a path to the system’s certificate roots
- ssl_certaccepts a path to the client’s certificate file
- ssl_keyaccepts a path to the client’s private key file
- ssl_modeexpects a value defined for MySQL client command option- --ssl-modeSee https://dev.mysql.com/doc/refman/5.7/en/connection-options.html#option_general_ssl-mode
Source§type TransactionManager = AnsiTransactionManager
 
type TransactionManager = AnsiTransactionManager
i-implement-a-third-party-backend-and-opt-into-breaking-changes only.Source§fn execute_returning_count<T>(&mut self, source: &T) -> QueryResult<usize>
 
fn execute_returning_count<T>(&mut self, source: &T) -> QueryResult<usize>
i-implement-a-third-party-backend-and-opt-into-breaking-changes only.Source§fn transaction_state(&mut self) -> &mut AnsiTransactionManager
 
fn transaction_state(&mut self) -> &mut AnsiTransactionManager
i-implement-a-third-party-backend-and-opt-into-breaking-changes only.Source§fn instrumentation(&mut self) -> &mut dyn Instrumentation
 
fn instrumentation(&mut self) -> &mut dyn Instrumentation
i-implement-a-third-party-backend-and-opt-into-breaking-changes only.Source§fn set_instrumentation(&mut self, instrumentation: impl Instrumentation)
 
fn set_instrumentation(&mut self, instrumentation: impl Instrumentation)
Instrumentation implementation for this connectionSource§fn transaction<T, E, F>(&mut self, f: F) -> Result<T, E>
 
fn transaction<T, E, F>(&mut self, f: F) -> Result<T, E>
Source§fn begin_test_transaction(&mut self) -> QueryResult<()>
 
fn begin_test_transaction(&mut self) -> QueryResult<()>
Source§impl LoadConnection for MysqlConnection
 
impl LoadConnection for MysqlConnection
Source§type Cursor<'conn, 'query> = StatementIterator<'conn>
 
type Cursor<'conn, 'query> = StatementIterator<'conn>
LoadConnection::load Read moreSource§type Row<'conn, 'query> = MysqlRow
 
type Row<'conn, 'query> = MysqlRow
Iterator::Item for the iterator implementation
of LoadConnection::CursorSource§fn load<'conn, 'query, T>(
    &'conn mut self,
    source: T,
) -> QueryResult<Self::Cursor<'conn, 'query>>where
    T: Query + QueryFragment<Self::Backend> + QueryId + 'query,
    Self::Backend: QueryMetadata<T::SqlType>,
 
fn load<'conn, 'query, T>(
    &'conn mut self,
    source: T,
) -> QueryResult<Self::Cursor<'conn, 'query>>where
    T: Query + QueryFragment<Self::Backend> + QueryId + 'query,
    Self::Backend: QueryMetadata<T::SqlType>,
i-implement-a-third-party-backend-and-opt-into-breaking-changes only.Source§impl MultiConnectionHelper for MysqlConnection
 
impl MultiConnectionHelper for MysqlConnection
Source§fn to_any<'a>(
    lookup: &mut <Self::Backend as TypeMetadata>::MetadataLookup,
) -> &mut (dyn Any + 'a)
 
fn to_any<'a>( lookup: &mut <Self::Backend as TypeMetadata>::MetadataLookup, ) -> &mut (dyn Any + 'a)
i-implement-a-third-party-backend-and-opt-into-breaking-changes only.Source§fn from_any(
    lookup: &mut dyn Any,
) -> Option<&mut <Self::Backend as TypeMetadata>::MetadataLookup>
 
fn from_any( lookup: &mut dyn Any, ) -> Option<&mut <Self::Backend as TypeMetadata>::MetadataLookup>
i-implement-a-third-party-backend-and-opt-into-breaking-changes only.Source§impl R2D2Connection for MysqlConnection
Available on crate feature r2d2 only. 
impl R2D2Connection for MysqlConnection
r2d2 only.