62
62
@click .option ("--mysql-password" , default = None , help = "MySQL password" )
63
63
@click .option ("-h" , "--mysql-host" , default = "localhost" , help = "MySQL host. Defaults to localhost." )
64
64
@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
+ )
65
72
@click .option ("-S" , "--skip-ssl" , is_flag = True , help = "Disable MySQL connection encryption." )
66
73
@click .option (
67
74
"-i" ,
@@ -137,6 +144,7 @@ def cli(
137
144
mysql_database : str ,
138
145
mysql_host : str ,
139
146
mysql_port : int ,
147
+ mysql_socket : t .Optional [str ],
140
148
skip_ssl : bool ,
141
149
mysql_insert_method : str ,
142
150
mysql_truncate_tables : bool ,
@@ -157,6 +165,9 @@ def cli(
157
165
"""Transfer SQLite to MySQL using the provided CLI options."""
158
166
click .echo (_copyright_header )
159
167
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
+
160
171
if mysql_collation :
161
172
charset_collations : t .Tuple [str , ...] = tuple (
162
173
cs .collation for cs in mysql_supported_character_sets (mysql_charset .lower ())
@@ -183,6 +194,7 @@ def cli(
183
194
mysql_database = mysql_database ,
184
195
mysql_host = mysql_host ,
185
196
mysql_port = mysql_port ,
197
+ mysql_socket = mysql_socket ,
186
198
mysql_ssl_disabled = skip_ssl ,
187
199
mysql_insert_method = mysql_insert_method ,
188
200
mysql_truncate_tables = mysql_truncate_tables ,
0 commit comments