Forum Discussion

duggy's avatar
duggy
Icon for Advocate II rankAdvocate II
7 years ago
Solved

Desktop Data Refresh Fails and no idea why

Hi,

 

I am pulling in a table from a MySql Database that has millions of rows. All other tables are pulled n correctly, no worries. This table gets to about 5million rows and then just fails saying Timeout Experienced (eventhough everything is up and running).

Is there any og or anything to get more details?

 

 

3 Replies

  • v-jiascu-msft's avatar
    v-jiascu-msft
    Icon for Microsoft Employee rankMicrosoft Employee

    Hi duggy,

     

    Actually, that's an error of Mysql database. I would suggest you enlarge the timeout values. Please refer to https://forums.mysql.com/read.php?38,188231,188231 and https://stackoverflow.com/questions/3475867/mysql-data-mysqlclient-mysqlexception-timeout-expired.

     

    Please understand that this link is provided “AS IS” with no warranties or guarantees of content changes, and confers no rights.

     

     

    Best Regards,

    • duggy's avatar
      duggy
      Icon for Advocate II rankAdvocate II

      I incresed the timeout to 60 as you suggested and error dissapeared.

      MUCH APPRECIATED!

      • andyparkerson's avatar
        andyparkerson
        Icon for Advocate III rankAdvocate III

        As far as MySQL timeout errors go, this addresses one end. There can be a timeout on the server as well as a timeout on the client. In this case, it seems that it was a timeout on the server end, which when addressed resolved the issue.

         

        However, I ran into a similar error message, with my data refresh failing after 11 minutes or so. My server timeout was set to indefinite, so the problem wasn't on the server. It turns out by default the CommandTimeout on the MySQL.Database() function in Power Query M is set to 10 minutes. I was trying to download 3 million rows, and it was taking more than 10 minutes, and so it would fail.

         

        The option to set the CommandTimeout is as an optional record in the third parameter of the MySQL.Database() function.

         

        https://docs.microsoft.com/en-us/powerquery-m/mysql-database

         

        I used the following:

        Source = MySQL.Database( "192.168.0.100", "myschema", [ CommandTimeout = #duration(0,0,30,0) ] ),

        Sure enough it worked just fine. Duration is listed in Days, Hours, Minutes, Seconds.