我们面临以下问题。我们在MySQL数据库的系统下开发定制包。所有数据库更改都从自定义页面添加到自定义中。
现在,当我们在MySQL数据库上发布系统下的自定义时,我们会看到与MySQL和MySQL之间的差异相关的错误。我已经回顾了Acumatica为数据库更改生成的xml,并且有一些不同之处,例如:
我们如何解决这个问题,这样我们就不必有两个不同的包,一个用于MySQL,另一个用于MySQL?
下面是Acumatica如何在MySql情况下为CS属性生成脚本:
<Sql TableName="csattribute" TableSchemaXml="#CDATA">
<CDATA name="TableSchemaXml"><![CDATA[<table name="csattribute">
<col name="CompanyID" type="Int" default="Zero" />
<col name="AttributeID" type="NVarChar(30)" />
<col name="Description" type="NVarChar(60)" />
<col name="ControlType" type="Int" />
<col name="EntryMask" type="VarChar(60)" nullable="true" />
<col name="RegExp" type="NVarChar(60)" nullable="true" />
<col name="List" type="NVarChar(MAX)" nullable="true" />
<col name="IsInternal" type="Bit" nullable="true" />
<col name="tstamp" type="Timestamp" default="CurrentDateTime" />
<col name="CreatedByID" type="UniqueIdentifier" />
<col name="CreatedByScreenID" type="Char(8)" />
<col name="CreatedDateTime" type="DateTime" />
<col name="LastModifiedByID" type="UniqueIdentifier" />
<col name="LastModifiedByScreenID" type="Char(8)" />
<col name="LastModifiedDateTime" type="DateTime" />
<col name="NoteID" type="UniqueIdentifier" />
<index name="CSAttribute_NoteID">
<col name="NoteID" />
<col name="CompanyID" />
</index>
<index name="PRIMARY" clustered="true" primary="true" unique="true">
<col name="AttributeID" />
<col name="CompanyID" />
</index>
</table>]]></CDATA>
</Sql>对于MS,则使用相同的表:
<Sql TableName="csattribute" TableSchemaXml="#CDATA">
<CDATA name="TableSchemaXml"><![CDATA[<table name="csattribute">
<col name="CompanyID" type="Int" default="Zero" />
<col name="AttributeID" type="NVarChar(30)" />
<col name="Description" type="NVarChar(60)" />
<col name="ControlType" type="Int" />
<col name="EntryMask" type="VarChar(60)" nullable="true" />
<col name="RegExp" type="NVarChar(60)" nullable="true" />
<col name="List" type="NVarChar(MAX)" nullable="true" />
<col name="IsInternal" type="Bit" nullable="true" />
<col name="tstamp" type="Timestamp"/>
<col name="CreatedByID" type="UniqueIdentifier" />
<col name="CreatedByScreenID" type="Char(8)" />
<col name="CreatedDateTime" type="DateTime" />
<col name="LastModifiedByID" type="UniqueIdentifier" />
<col name="LastModifiedByScreenID" type="Char(8)" />
<col name="LastModifiedDateTime" type="DateTime" />
<col name="NoteID" type="UniqueIdentifier" />
<index name="CSAttribute_NoteID">
<col name="NoteID" />
<col name="CompanyID" />
</index>
<index name="CSAttribute_PK" clustered="true" primary="true" unique="true">
<col name="CompanyID" />
<col name="AttributeID" />
</index>
</table>]]></CDATA>
</Sql>发布于 2017-12-05 13:01:48
如果使用以下关键字,则可以指示项目中的自定义SQL脚本中的脚本是否应专门为MySQL或MySQL运行.
对于MySQL语句,请使用以下方法:
--[mssql: Skip]
--[mysql: Native]
-- include your MySQL Code here...对于MS语句,请使用以下命令:
--[mssql: Native]
--[mysql: Skip]
-- include your MS SQL Code here...这些sql脚本属性在Acumatica站点的帮助中可用:自定义指南>管理项目中的项>数据库脚本>以向项目 (公益文章 )添加自定义SQL脚本
这一信息以2017R2为基础。您必须测试并确认它在6.1中的使用。
下面是我目前在2017R2中使用的一个示例。请注意,需要以6.1中的顺序运行脚本的重要性,您可能必须将脚本命名为某种特定的顺序(Ex:使用“升级.”)。跑到最后还是“AUpgrade.”(先跑)。在2017R2中,您可以设置控制执行顺序的优先级值,甚至在编辑脚本窗口中也有一个“指定数据库引擎”按钮,它将为您添加属性。

https://stackoverflow.com/questions/47627401
复制相似问题