Etiquetado: obsolete, recreate, schemaupdate
- Este debate tiene 4 respuestas, 2 mensajes y ha sido actualizado por última vez el hace 7 años, 6 meses por
BETEA.
-
AutorEntradas
-
11 enero 2019 a las 09:04 #7757
BETEA
ParticipanteBuenos dias,
Estoy pasando a extension un desarrollo que tenemos. Entre otras cosas, he tenido que crear una tabla nueva. He publicado la extension sobre nuestro docker, y hasta ahi todo “bien”. He conseguido que compile en AL el codigo traido desde el object designer, y ahora toca pulirlo y arreglaro para hacer un estandar.
El problema ha venido al quitar 2 campos de la tabla nueva que he creado, y re-publicar la extension:
[2019-01-10 17:55:08.54] Sending request to http://beteabc:7049/NAV/dev/metadata
[2019-01-10 17:55:46.79] Sending request to http://beteabc:7049/NAV/dev/apps?SchemaUpdateMode=synchronize
[2019-01-10 17:56:04.78] The request for path /NAV/dev/apps?SchemaUpdateMode=synchronize failed with code 422. Reason: Table Disp. producto por Almacen:: Unsupported field change. Field:Inventario X; Change:Remove
Table Disp. producto por Almacen:: Unsupported field change. Field:Inventario Y; Change:Remove
Como veis, parece que no le gusta que haya quitado lso campos. He despublicado la extension, he reiniciado el docker, incluse he ido al SQL manager y he borrado fisicamente la nueva tabla creada, pero me sigue dando error… Parece que queda algo por ahi. Existe alguna forma de publicar la extension haciendo una especie de “Force”?
Muchas gracias
11 enero 2019 a las 09:44 #7759
Laura NicolàsSuperadministradorHola,
En el launch.json tienes que añadir el parámetro “schemaUpdateMode”: “Recreate”
Con esto el sistema recrea todo el esquema de datos por lo que te permite eliminar tablas y campos creados, o cambiar de tipo de datos los campos. Ojo, también pierdes todos los datos de prueba que hayas generado.
Esto lo puedes hacer mientras estés en un entorno de desarrollo, pero no lo podrás hacer en un entorno de producción, porque en PROD no puedes permitirte perder los datos! En PROD tendrías que gestionar el tema de los datos con una codeunit de Upgrade.
Si la app la publicas en el cloud (ya sea en la AppSource, o una personalización de cliente), no vas a poder eliminar los campos nunca. En su lugar, tendrías que marcarlos como obsoletos, y gestionar los datos con una codeunit de upgrade. Te dejo alguna documentación: https://docs.microsoft.com/en-us/dynamics365/business-central/dev-itpro/upgrade/deprecated-fields
Salut!
Laura Nicolàs11 enero 2019 a las 10:01 #7762BETEA
ParticipanteMuchas gracias Laura!
Con el recreate parece que no me da ya ese fallo, aunque me sale esto:
[2019-01-11 09:54:42.45] Sending request to http://beteabc:7049/NAV/dev/metadata
[2019-01-11 09:55:06.75] Sending request to http://beteabc:7049/NAV/dev/apps?SchemaUpdateMode=recreate
[2019-01-11 09:55:08.21] The request for path /NAV/dev/apps?SchemaUpdateMode=recreate failed with code 422. Reason: The following SQL error was unexpected:
No item by the name of ‘”dbo”.”CRONUS ES$Sales Line$7d27f5f1-6084-471d-8b5a-770eefbfe6a1″‘ could be found in the current database ‘FinancialsES’, given that @itemtype was input as ‘(null)’.Como andube borrando tablas de SQL sin pensar demasiado, se habra quedado alguan dependencia por ahi… Al ser un entorno nuestro propio, me puse a borrar cosas sin miedo, y al final pasa lo que pasa… Intentare depurar un poco el SQL, y si me lelva demasiado, borrar docker, crear uno nuevo, y adelante.
De todas formas lo dicho, el recreate parefe haberme solucionado el tema de los campos borrados.
Muchas gracias!
11 enero 2019 a las 10:27 #7766
Laura NicolàsSuperadministradorYo no me liaria con el SQL e iria a recrear el docker directamente… si tocas el SQL, aunque consigas solventarlo, siempre te puede salir por otro lado en unos días o semanas…
Salut!
Laura Nicolàs11 enero 2019 a las 10:38 #7768BETEA
ParticipanteEfectivamente, he borrado y creado uno nuevo. Tengo un script que me borra el docker, y me crea otro de igual nombre, asique sin darle demasiadas vueltas, es lo que he hecho….
Un saludo y muchas gracias de nuevo!
-
AutorEntradas
- Debes estar registrado para responder a este debate.