0

我目前有 3 个环境:

  1. DEV(带有 VS2012 和源代码)- 连接到 TEST db
  2. TEST - 连接到 TEST db
  3. PROD - 连接到 PROD db

该网站目前在 DEV 和 TEST 上运行良好(已添加内容、小部件等)。

当我尝试推广到 PROD 时,该网站似乎运行良好(那里的所有页面,我可以导航等) - 但是,我根本无法编辑。

例如,在添加新页面/编辑内容时,我会收到此错误:

"An unhandled exception has occurred and the request was terminated. Please refresh the page. If the error persists, go back

could not insert: [Orchard.ContentManagement.Records.ContentItemVersionRecord][SQL:    INSERT INTO Orchard_Framework_ContentItemVersionRecord (Number, Published, Latest, Data, ContentItemRecord_id) VALUES (?, ?, ?, ?, ?); select SCOPE_IDENTITY()]

NHibernate.Exceptions.GenericADOException: could not insert: [Orchard.ContentManagement.Records.ContentItemVersionRecord][SQL: INSERT INTO Orchard_Framework_ContentItemVersionRecord (Number, Published, Latest, Data, ContentItemRecord_id) VALUES (?, ?, ?, ?, ?); select SCOPE_IDENTITY()] ---> System.Data.SqlClient.SqlException: Cannot insert the value NULL into column 'Id', table 'Orchard.dbo.Orchard_Framework_ContentItemVersionRecord'; column does not allow nulls. INSERT fails."

此外,当我尝试在 PROD 中禁用形状跟踪模块时 - 它会说成功,但是当我检查它时实际上并没有禁用该模块。

这就是我将它发布到 PROD 的方式:

  1. 使用 build.cmd "compile;package" 在 DEV 上构建项目
  2. 将 build\Stage 的内容复制到 PROD(App_Data 文件夹只有 _marker.txt 文件)
  3. 在 PROD 中创建一个空白数据库
  4. 在 PROD 中打开网站,它要求我输入网站名称、数据库详细信息等。
  5. 现在,当我打开网站时——它会显示默认的“ThemeMachine”网站——这很好
  6. 然后,我将数据库从 TEST 复制到 PROD(通过 SQL Server 导出)
  7. 现在,当我打开网站时,我的网站运行良好,所有页面等,但在尝试编辑内容或添加新页面时出现异常

我该怎么做?

4

1 回答 1

1

这意味着您的表没有定义正确的标识。由于您在导出和导入时没有获取所有架构信息,因此您可能还缺少有关表的大量元数据。备份/恢复是移动数据库的一种更安全的方法,尽管还有其他方法,因为您可以保证在另一端拥有相同的数据库、模式 + 数据。

于 2013-04-11T03:48:22.717 回答