Xׯd"YddlZddlZddlZddlZddlZddlZddlZddlmZddl m Z ddl m Z ddl mZddlmZddlmZddlmZdd lmZGd d eZdd ZddZdZGddeZGddeZdS)N)Thread)get_connection_parameters)replace_string_parameters)NotConnectedError)db_utils)request_password)modules)to_encodedStringceZdZdZdS) HelperExitedcJt||||_dS)N) Exception__init__ returncode)selfwhatrs ..\modules\DataMigrator.pyrzHelperExited.__init__(s#4&&&$N)__name__ __module__ __qualname__rrrr r 's#%%%%%rr Fc>|j}|jjdks|rd|zS|jjdkrXtjtj|}|d|id|zS|jjdkr|dds tj |t| }| n)#ttjf$rtd wxYw|d }|rI|r5|d }|d |d}|ntdd|zStd|jjz)N MysqlNativez"%(userName)s@%(hostName)s:%(port)sMysqlNativeSSH tunnelPortz(%(userName)s@%(hostName)s:%(tunnelPort)sMysqlNativeSocketsocketF)passwordzThere is no connection to the target MySQL server and the socket parameter in your target connection settings is blank. Please check that your target server is running or go back to the Target Selection page and set the socket parameter there.zSHOW VARIABLES LIKE 'socket';ValueuserName)r!rzFailed while querying the socket server variable and the socket parameter in your target connection settings is blank. Please go back to the Target Selection page and make sure that you have the socket parameter set.z%(userName)s@::%(socket)sz8Connection method type %s is not supported for migration)parameterValuesdrivernamer DbMySQLQuery getTunnelPort openTunnelupdategetrMySQLConnectionrconnectr MySQLErrorr executeQuerynextRow stringByName disconnect)connnoSSHparamr connectionresultrs rmysql_conn_stringr6-s  E {=((E(3e;;  - - -)778L8W8WX\8]8]^^  lJ/0009EAA  0 0 0yy5)) U o%5dEUVZE[E[\\\ ""$$$$%x':; o o o!nooo o  ,,-LMMF U&..** U,,W55%*:%6II%%''''!TUUU+U22RUYU`Ueefffs .7C&&&D ct|j}|t||jjpd}t ||}|r)tjdd| d}|S)NzaDRIVER={%driver%};SERVER=%host%;PORT=%port%;DATABASE={%database%};UID=%username%;PWD={%password%}z(PWD={[^;]}*|PWD=[^;]*);) dictr"r(rr#connectionStringTemplaterresubrstrip)r1strip_password conn_paramsconnection_string_template connstrings rodbc_conn_stringrCMst+,,K066777!%!E"mJm*+E{SSJSV5r:FFMMcRR rc<|jjdz|jdzS)Nz://wbcopytables_connection_string)r#driverLibraryNamer")r1s rpython_conn_stringrGWs ; (5 043GHh3i iirc&eZdZdZdZdZdZdS)TableCopyWorkerctj|||_||_||_t jdd|z|jd|tj dkr?tj |tj tj tjdd|_dStj |tj tj tjdd|_dS)N MigrationzSpawning copy worker task: %s win32T)stdinstdoutstderruniversal_newlinesshell)rNrOrPrQ close_fds)rr_owner result_queue _process_argsgrt log_debug3 send_infojoinsysplatform subprocessPopenPIPESTDOUTprocess)rownerargsrUs rrzTableCopyWorker.__init__\s (! {$Cd$JKKK chhtnn--- <7 " "&+D PZP_hrhy/34AAADLLL&+D PZP_hrhy/3tEEEDLLLrc|jNt|}|jj||jjdSt d|jj)Nz%Table copy task finished unexpectedly)rapollr rNwriteflushr r)rtexts r feed_inputzTableCopyWorker.feed_inputlso <     &#D))D L  $ $T * * * L  $ $ & & & & &F H_`` `rcF |j|jrt jd|jj}|h| d\}}}|dvr|j ||fn|j d|f|j|jj }| d}|D]l}|h| d\}}}|dvr|j ||fP|j d|fm|jjdkr+|j dd|jjzfdS|j d dS#tj$r[}|jd |jz||j d Yd}~dSd}~wt$$rL}ddl}||j dt+|fYd}~dSd}~wwxYw) NzCanceled by user:)PROGRESSERRORBEGINENDLOG rDONEzWorker exited with status %s)rrNz0Copy task interrupted by user, terminating %s...) INTERRUPTEDN)rarerTquery_cancel_statusrW UserInterruptrOreadlinestrip partitionrUputreadsplitrrYr$ terminater traceback print_excstr) rlinetype_msgoutputlineser}s rrunzTableCopyWorker.runus" 4,##%%-;2244@+,>???|*3355##'::<<#9#9##>#>LD!SDDD)--tSk::::)--udm<<<,##%%-\(--//FLL&&E < <##'::<<#9#9##>#>LD!SDDD)--tSk::::)--ucl;;;|&!++!%%v/MPTP\Pg/g&hiiiii!%%n55555  9 9 9 K ! !"TW[W`"` a a a NN      ! !"7 8 8 8 8 8 8 8 8 8 4 4 4        ! ! !   ! !63q66"2 3 3 3 3 3 3 3 3 3 4s,GG"G""J 1AI J AJJ cR|js|j\}}|rd}|dD]]}|dr,|d\}}}C|j|^|r|j ||f|r|j| t|jdr|j n(ddl }tj|jj|jnM#t$$r@}|jdkrn*|jd|jjd|Yd}~nd}~wwxYw|jdS) Nrqz PROGRESS:rkr|rzUnable to kill worker task : )rare communicater{ startswithrwrxrTrYrUryhasattrr|signaloskillpidSIGTERMOSErrorerrno send_erroridwait)ror last_progressrrrrs rr|zTableCopyWorker.terminates <     &<++--DAq A $ GGDMM44D{334151G1G1L1L.a --d3333 A%))4*?@@@ ) %%a((( g4<55>L**,,,,!MMMGDL,fn=== g g g7a<<K***RVR^RaRaRacdcd+efff  g s)AE F  6FF N)rrrrrirr|rrrrIrI[sWEEE aaa#4#4#4JrrIc>eZdZdZdZdZdZd dZdZdZ d Z d S) DataMigratorzwbcopytables-binct|dr t|drt|dsJ||_||_||_|pd|_||_|pd|_d|_g|_g|_ d|_ dS)NrYr send_progressr8F) rrT_options_src_conn_object _src_password_tgt_conn_object _tgt_password_resume_tasks _processes_error)rmessage_targetoptions srcconnobj srcpassword tgtconnobj tgtpasswords rrzDataMigrator.__init__s~{33 KP\8]8] Kbijx{JcKcK K K K$  *(.B *(.B   rc  g}tjdkr tjdd5}t |D]"}g}||d||d|jr||d||d||d ||d |d dr||d n|d d |}| |dz$|d|j zdddn #1swxYwYn#t$r}td|jzd}~wwxYwt |D]}|jrx|d|d|d|d|d|d |d gz }|d dr||d k|d |d|d|dgz }d}|jst!d||j} d|vr| d|dzd|vr| d|dz|jr| d|jddg| z|z} |jd | tjdkr8t)j| t(jt(jt(jd} n6t)j| t(jt(jt(j} |jr)|jd z|jzdzd} n|jdzd} | | | \} }d} | r|| dz }|rE|ddD]}|j|d }| | jd kr_d!|dDD]=\}}}t?| }||z }|||d"z|zd#<>|S|j|td$| jz)%NrMwFdelete source_schema source_table target_schema target_tablesource_primary_keytarget_primary_keyselect_expression* rq--table-file=%sError creating table file: %s--tabler8zPath to wbcopytables not foundstimeout--source-timeout=%sttimeout--target-timeout=%s--resumez --count-only--passwords-from-stdinrLT)rNrOrPrR)rNrOrPzutf-8rcrg|]4}|d|ddd5S) ROW_COUNTrkN)rr{).0ls r z1DataMigrator.count_table_rows..s@(s(s(saYZYeYefqYrYr(sabb)9(s(s(sr. row_countzLError getting row count from source tables, wbcopytables exited with code %s)!r[r\tempfileNamedTemporaryFilelistvaluesappendrr)rZrfr$IOErrorrstrerrorcopytable_path RuntimeErrorhelper_basic_arglistrTrYr]r^r_rrencodererdecoder{rintrw)r working_set table_param table_filetaskfieldsrrrOrcargvout passwordsrrtotalschematablecounts rcount_table_rowszDataMigrator.count_table_rowss <7 " " O0UCCCLz $[%7%7%9%9 : :66!# d?&;<<< d>&:;;;<3"MM$*?@@@"MM$~*>???"MM$/C*DEEE"MM$/C*DEEE#xx(;TBB3 & d3F.G H H H H & c 2 2 2#yy00"((5555&&'8:?'JKKK#LLLLLLLLLLLLLLL& O O O!@1:!MNNN O[//1122 \ \<\ItO/Dd>FZ\`ap\qswyGtHJNOcJdfjkf@$AAKxx 3T::0#**40C+DEEEE#**3////ItO/Dd>FZ#[[KK" A?@@ @((66    KK-Z0@@ A A A    KK-Z0@@ A A A < $ KK # # ##^5MNQUUXcc chhtnn--- <7 " ""4zz_i_nvz{{{CC"4zz_i_noooC < A*4/0BB4GOOPWXXII*4/77@@Ihhjj ??9--DAqI ,!((7+++ -'**0066--AK))!,,,,Ehhjj  >Q  (s(s6<&:;;; d?&;<<< d>&:;;; d+?&@AAA d+?&@AAA88$7>>/"MM$/B*CDDDD"MM#...#yy00"((5555&&'8:?'JKKK!LLLLLLLLLLLLLLL$ O O O!@1:!MNNN O[//1122 , , 4+@$~BVX\]lXmosuCpDFJK_F`bfg{b| }} 88/66,&&t,?'@AAAA&&s++++ {  m + + ,,M((.. 788 =  3U ; ; - KK+ , , , =  -u 5 5 . KK, - - - =  4e < < 3 KK1 2 2 2 %M(:(::;;;    KK-Z0@@ A A A    KK-Z0@@ A A A tD$9$I$N$N$P$PQQ Q Q"3CGGHXYYO E 1OCDDD < $ KK # # ##$t+k9'"[[)9)9:: dD4FGG$,T1$2DDTIJJJ ))++s;FEF FFFFF G)GGFcDg}|jjjjdkra|dt |j|z|jjddr|dnt|jjtj j r@|jjj dkr+|dt|jzn+|dt|jd z|d |jjjjz|r`|d t |j|z|jjddr|d |S) NMysqlz--mysql-source="%s"OPT_ENABLE_CLEARTEXT_PLUGINFz--source-use-cleartextpyodbcz--pythondbapi-source="%s"z--odbc-source="%s"Tz--source-rdbms-type=%sz --target="%s"z--target-use-cleartext)rr#rbr$rr6r"r) isinstancerWclassesdb_mgmt_PythonDBAPIDriverrFrGrCr)rinclude_target_connr2rcs rrz!DataMigrator.helper_basic_arglistgs  ' - 2g = = KK-0A$BWY^0_0__ ` ` `$4889VX]^^ 6 4555.5s{7\]] ^#*<HH KK36HI^6_6__ ` ` ` ` KK,/?@UW[/\/\\ ] ] ] ,t/D/K/Q/VVWWW  6 KK*;D)N)R)RS`bd)e)e-1-B-R-V-VWdfh-i-i)6)6)-)>)N)R)RS`bd)e)e-1-B-R-V-VWdfh-i-i rc Hd}t|jD] }||dz }i}d|_t }d|_d} |ri t |jdd}t|r||j|j \}}n2#tj $rYnwxYw|j \}}|dkrL|dd} || |j|no|dkrq|dd} | |vr|| |j|d| | d d f|| <n|d kr|dd} | |vr|| |j||jd | |t)jd d|zd|_ng|dkr|d\} } } dt-| f|| <|jt1t3dt|D|z dd|zn|dkr|j|n|dkrDd}|r%d|_|jd|znl|jdnQ|dkr+d}d|_d|_|jdn |j|dz|zJ|S)NrrFT_update_resume_statusrnrkro)FrrrmrKz%s rlcg|] }|d S)rr)rxs rrz3DataMigrator.process_until_done..s4e4e4eaQqT4e4e4erz Copying %sz, rprrz$Copy helper exited with an error: %szCopy helper has finishedrszCopy helper was aborted by userr)rrr interruptedsetrgetattrrTcallabler get_nowaitrEmptyr)r{addrYremover add_log_entryrW log_errorrrfloatsumrZ) rtotal_row_countrprogress_row_countactive_job_namesdonermsgtypemessagercurrentrs rrzDataMigrator.process_until_dones$+224455 2 2E u[1 1OO 55 5 @ <,3DKAXZ^,_,_) 566<--dl;;;'+'9'D'D'F'F$GWW{E$(#5#9#9#;#; '!!&}}S11!4  $$\222 %%g....E!!&}}S11!4 #333$++L999 %%g...48:L:P:PQ]_i:j:jkl:m3n"<00G##&}}S11!4 #333$++L999 &&w/// ))!\7CCC k6'>:::# J&&/6}}S/A/A, gu493w<<3H"<0 ))%4e4e4HZHaHaHcHcCdCd4e4e4e0f0f*g*gjy*y|HKOKTKTUeKfKf|fggggE!! %%g....F""F#'DLK**+QT[+[\\\\K))*DEEEEM))#' #  %%&GHHHH %%gnw&>???k5 @n"!sAB--C?CNF) rrrrrrrrrrrrrrrrs'N   Q}Q}Q}fEEEP,,4D"D"D"D"D"rrr1)rr[r]rrWr<r threadingrworkbench.db_driverrworkbench.utilsrworkbench.exceptionsr workbenchrmigration_source_selectionrr wb_commonr rr r6rCrGrIobjectrrrrr:s,  999999555555222222777777&&&&&&%%%%%9%%% gggg@jjj\\\\\f\\\~w"w"w"w"w"6w"w"w"w"w"r