6262@click .option ("--mysql-password" , default = None , help = "MySQL password" )
6363@click .option ("-h" , "--mysql-host" , default = "localhost" , help = "MySQL host. Defaults to localhost." )
6464@click .option ("-P" , "--mysql-port" , type = int , default = 3306 , help = "MySQL port. Defaults to 3306." )
65+ @click .option (
66+ "-k" ,
67+ "--mysql-socket" ,
68+ type = click .Path (exists = True ),
69+ default = None ,
70+ help = "Path to MySQL unix socket file." ,
71+ )
6572@click .option ("-S" , "--skip-ssl" , is_flag = True , help = "Disable MySQL connection encryption." )
6673@click .option (
6774 "-i" ,
@@ -137,6 +144,7 @@ def cli(
137144 mysql_database : str ,
138145 mysql_host : str ,
139146 mysql_port : int ,
147+ mysql_socket : t .Optional [str ],
140148 skip_ssl : bool ,
141149 mysql_insert_method : str ,
142150 mysql_truncate_tables : bool ,
@@ -157,6 +165,9 @@ def cli(
157165 """Transfer SQLite to MySQL using the provided CLI options."""
158166 click .echo (_copyright_header )
159167 try :
168+ if mysql_port and mysql_socket :
169+ raise click .ClickException ("Error: Can only specify either -P/--mysql-port or -k/--mysql-socket, not both." )
170+
160171 if mysql_collation :
161172 charset_collations : t .Tuple [str , ...] = tuple (
162173 cs .collation for cs in mysql_supported_character_sets (mysql_charset .lower ())
@@ -183,6 +194,7 @@ def cli(
183194 mysql_database = mysql_database ,
184195 mysql_host = mysql_host ,
185196 mysql_port = mysql_port ,
197+ mysql_socket = mysql_socket ,
186198 mysql_ssl_disabled = skip_ssl ,
187199 mysql_insert_method = mysql_insert_method ,
188200 mysql_truncate_tables = mysql_truncate_tables ,
0 commit comments