0

私は現在3つの環境を持っています:

  1. DEV (VS2012 とソース コードを使用) - TEST db に接続します
  2. TEST - TEST db に接続します
  3. PROD - PROD db に接続します

Web サイトは現在、DEV と TEST で正常に動作しています (コンテンツ、ウィジェットなどが既に追加されています)。

PROD にプロモートしようとすると、Web サイトは正常に動作しているように見えます (すべてのページがそこにあり、ナビゲートできるなど) - ただし、編集がまったくできません。

たとえば、新しいページを追加したりコンテンツを編集したりすると、次のエラーが発生します。

"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 で Web サイトを開くと、サイト名、データベースの詳細などを入力するよう求められます。
  5. さて、ウェブサイトを開くと、デフォルトの「ThemeMachine」サイトが表示されますが、これで問題ありません
  6. 次に、データベースを TEST から PROD に (SQL Server エクスポート経由で) コピーします。
  7. さて、ウェブサイトを開くと、すべてのページなどでウェブサイトが正常に動作するようになりましたが、コンテンツを編集したり、新しいページを追加しようとすると、例外を超えてしまいました

どうすればいいですか?

4

1 に答える 1

1

これは、テーブルに適切な ID が定義されていないことを意味します。すべてのスキーマ情報を取得せずにエクスポートおよびインポートしたため、テーブルに関する多くのメタデータも欠落している可能性があります。バックアップ/復元は、データベースを移動するためのより安全な方法ですが、他の方法もあります。反対側に同じデータベース、スキーマ + データがあることが保証されているためです。

于 2013-04-11T03:48:22.717 に答える