GNU/Linux >> Linux の 問題 >  >> Linux

OpenStack Neutron db_syncエラー–デフォルト値がNULLのNOTNULL列を追加できません[解決済み]

エラーが発生した場合デフォルト値がNULLのNOTNULL列を追加できません neutronデータベースにデータを入力または同期しているときに、修正する方法は次のとおりです。解決策を確認する前に、エラーのスナップショットを確認してください。

# su -s /bin/sh -c "neutron-db-manage --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugins/ml2/ml2_conf.ini upgrade head" neutron
 sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) Cannot add a NOT NULL column with default value NULL [SQL: u'ALTER TABLE address_scopes ADD COLUMN ip_version INTEGER NOT NULL']

私のOpenStackインストールはMySQLデータベースを使用しているため、エラーは奇妙ですが、エラーはSQLiteと表示されます。

解決策:

私のインストールではMySQLデータベースを使用することになっているため、 neuront.confをすばやく確認しました。 接続変数が正しく設定されているかどうかを確認するためのファイル。驚いたことに、SQLiteを指す追加の接続変数があり、それが私の場合の原因でした。

# vim /etc/neutron/neutron.conf
[database]
 connection = mysql+pymysql://neutron:osneutron@controller/neutron
 The SQLAlchemy connection string to use to connect to the database. (string
 # value)
 # Deprecated group/name - [DEFAULT]/sql_connection
 # Deprecated group/name - [DATABASE]/sql_connection
 # Deprecated group/name - [sql]/connection
 connection = sqlite:////var/lib/neutron/neutron.sqlite

したがって、解決策は、sqliteを指している接続変数をコメントアウトすることでした。

# connection = sqlite:////var/lib/neutron/neutron.sqlite

それでおしまい! sqliteが列を追加できなかった理由を知りたい場合はaddress_scopes 既存のテーブルに対してNOTNULLとして制約がある場合、その理由は次のとおりです。

SQLite ALTER TABLEドキュメントによると、NOT NULL制約が指定されている場合、列にはNULL以外のデフォルト値が必要です。


Linux
  1. APCインストールエラー– sh:phpize:コマンドが見つかりません[解決済み]

  2. 設定エラーの修正方法:マクロディレクトリ「m4」が見つかりません[解決済み]

  3. XEN VMコンソールを開くことができません– Virt-viewerエラー:ディスプレイを開くことができません[解決済み]

  1. OpenStackエラー–インデックスの列サイズが大きすぎます。最大列サイズは767バイトです[解決済み]

  2. 有効なbaseurlが見つかりません:YumRepoエラー[解決済み]

  3. 修正システムは、initsystemエラーとしてsystemdで起動されていません

  1. 別のSSHポートを使用したGitリモート追加(22ではない)

  2. ConfigParserインストールエラー– pythonsetup.pyegg_infoがエラーコード1で失敗しました[解決済み]

  3. OpenStack Compute Error –ホストのコンピューティングノードレコードがありません[解決済み]