Replies: 5 comments 19 replies
-
Did you do the required steps in order ?
|
Beta Was this translation helpful? Give feedback.
-
I don't know if this will be helpful for you, but we've struggled with migration too, using SQLite on the client and Deprovision/Reprovision on the server can keep the user waiting longer than they like and that means they might close the app. In preparing for our latest migration I am experimenting with this process;
Deprovision without Reprovision returns much faster than Deprovision/Reprovision. The app now has an uptodate server but no local db. It proceeds as a new install and syncs, allowing DMS to provision the local and server databases. A new install can also be quite slow so we sync one table at a time, following the relational heirarchy. This gives us a sync scope for each table and allows us to give progessive feedback to the user as each table syncs. By syncing one table at a time we've managed to avoid using snapshots on the server. |
Beta Was this translation helpful? Give feedback.
-
Well I already though this through, but did not find the time to implement it. supported changes aka wishlistThere are essentially four change that should be supported by DMS (or "it would be awesome if DMS supported them" ;-)):
two strategiesWhen migrating a schema, there are essentially two ways to handle old clients. Regarding the two options:
Therefore, i would like to opt for (a). (sorry @Mimetis :-D) migration strategy (a)doing the migration on the serverGoing with (a) in both cases (adding (1) and removing a column(2)) DMS should detect that there is actually a change in the sync setup.
handling the migration on the client sideNow, when an old client receives records with an additonal column that it does not know, it needs to silently discard it. This is actually a point where I still think how to solve this when you are using bulk-operations, as you then need to define the bulk-type up-front. migrating old clientsWhat is then still very important, is the actual migration of the client. Then, the next time it synchronizes, the server should detect (as the client sends the name of its latest migration), that client c1 is now running the latest bits and can handle the new schema.
migration strategy (b)doing the mgriation on the servershould essentially work the same way... handling the mgiration on the cliend sidesince the client schema will always be kept at the same version, as the server schema, there is nothing to handle in particular. migration old clientswhen the client synchronizes, it should send along the name of the (latest dotmim sync schema) migration it is currently using. Since this is the "dynamic" mode, I would that any column/table that was dropped by the migration should also be dropped on the client side. Does this make sense to you guys? |
Beta Was this translation helpful? Give feedback.
-
Hi @Mimetis , what have you thought of these comments, have you thought how to make an improvement without affecting the core of DOTMIM |
Beta Was this translation helpful? Give feedback.
-
Hello, What did you think of our comments, are they too complex for the Dommim core? Tell us what you have thought of all this, have you thought of other solutions that can be adapted to today's mobile device issues? |
Beta Was this translation helpful? Give feedback.
-
Good morning friends, today I want to know what is the correct way to create new columns in a production environment that does not affect the synchronization of my old clients.
Today I added a new column to a table, then I did the DeprovisionAsync and ProvisionAsync to that table to make the adjustments in the procedures, I use SqlSyncChangeTrackingProvider, but on the side of my clients it gave synchronization problems in their app that works with SQLite.
What can I do so that this does not affect until I can publish a new version of the app that uses this new column and that the app does DeprovisionAsync and ProvisionAsync to the table with the new column?
Or could it be that I did something wrong?
Could you send me the correct steps on how to make new columns to old projects.
I am using the latest version of Dotmin.
Error!!!
As I see it is because the number of columns is greater than the one that the app has in the synchronization.
Beta Was this translation helpful? Give feedback.
All reactions