python Djangoの機能でマイグレーションを実行しようとしたときに発生した。
PS C:\Users\wanta\Desktop\dev\django_pj\form_pj> python .\manage.py migrate Operations to perform: Apply all migrations: admin, auth, contenttypes, form_app, sessions Running migrations: Traceback (most recent call last): File "C:\Users\wanta\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\django\db\backends\utils.py", line 87, in _execute return self.cursor.execute(sql) File "C:\Users\wanta\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\django\db\backends\oracle\base.py", line 556, in execute return self.cursor.execute(query, self._param_generator(params)) cx_Oracle.DatabaseError: ORA-00406: COMPATIBLEパラメータは、12.0.0.0.0以上必要です。 ORA-00722: 機能"SQL identity columns"
対応方法
・COMPATIBLEパラメータの確認
以下のSQLで確認できる。
SELECT P.NAME NAME, P.VALUE VALUE, SP.VALUE SPFILE_VALUE FROM V$PARAMETER P, V$SPPARAMETER SP WHERE P.NAME = SP.NAME AND P.NAME = 'compatible';
NAME VALUE SPFILE_VALUE compatible 11.2.0 11.2.0
確かに12より低い値になっていた。
本来はバージョンの通りに設定するっぽい。バージョンアップのときに合わせて変えたりもするっぽい。
Oracle DatabaseのCOMPATIBLE初期化パラメータの値
SPfileも実際に11.2になっていた。。多分構築時のミス。
[oracle@localhost dbs]$ cat spfiletest_db.ora C"{[A ~vCCC"<Ptest_db.__db_cache_size=4194304 test_db.__java_pool_size=4194304 test_db.__large_pool_size=4194304 test_db.__oracle_base='/u01/app/oracle'#ORACLE_BASE set from environment test_db.__pga_aggregate_target=406847488 test_db.__sga_target=666894336 test_db.__shared_io_pool_size=0 test_db.__shared_pool_size=536870912 test_db.__streams_pool_size=0 test_db.__unified_pga_pool_size=0 *.compatible='11.2.0'
・COMPATIBLEパラメータの変更
以下ではSPファイルから設定を変更する。今回は19cなので19.0.0へ変更。
実行は自己責任で。
SQL> ALTER SYSTEM SET COMPATIBLE='19.0.0' SCOPE=spfile; システムが変更されました。 SQL>
再度バージョン確認する。
SQL> SELECT P.NAME NAME, P.VALUE VALUE, SP.VALUE SPFILE_VALUE 2 FROM V$PARAMETER P, V$SPPARAMETER SP 3 WHERE P.NAME = SP.NAME 4 AND P.NAME = 'compatible'; NAME -------------------------------------------------------------------------------- VALUE -------------------------------------------------------------------------------- SPFILE_VALUE -------------------------------------------------------------------------------- compatible 11.2.0 19.0.0 SQL>
起動インスタンスのバージョンが変わっていないのでインスタンスを再起動する。
パラメータを再確認。
NAME -------------------------------------------------------------------------------- VALUE -------------------------------------------------------------------------------- SPFILE_VALUE -------------------------------------------------------------------------------- compatible 19.0.0 19.0.0