herokuで「ERROR: cannot execute ALTER TABLE in a read-only transaction」がでて困る
問題
herokuの「Heroku Postgres - Add-ons」で行を追加しようと「ERROR: cannot execute ALTER TABLE in a read-only transaction」と怒られます.
解決策
こんなpythonからPostgresデータベースにアクセスするクラスを作成.
import os
import psycopg2
import json
import pprint
class PostgreSql:
def __init__(self):
self.conn = self.get_connection()
self.cur = self.conn.cursor()
##############################################
# DBコネクション取得関数
#
def get_connection(self):
dsn = "host=XXXXXXXXXXXXXX\
port=XXXX \
dbname=XXXXXXXXXX \
user=XXXXXXXXX \
password=XXXXXXXXXXXXXX"
return psycopg2.connect(dsn)
##############################################
# insert関数
#
def insert(self, sqlStr):
self.cur.execute('BEGIN')
self.cur.execute(sqlStr)
self.cur.execute('COMMIT')
##############################################
# mysqlでselectする用の関数
#
def select(self, sqlStr):
self.cur.execute(sqlStr)
return list(self.cur)
if __name__ == "__main__":
psql = PostgreSql()
##############################################
# カラムの追加
#
sql = "ALTER TABLE tbl_name ADD COLUMN category2 text;"
psql.insert(sql)
作成したpsqlクラスのinsert関数を使用してカラムを追加しましょう!!
sql = "ALTER TABLE tbl_name ADD COLUMN category2 text;"
psql.insert(sql)
これでherokuのダッシュボードでselectして追加されていたら完了!!
以上,「ERROR: cannot execute ALTER TABLE in a read-only transaction」の解決方でした.
Author And Source
この問題について(herokuで「ERROR: cannot execute ALTER TABLE in a read-only transaction」がでて困る), 我々は、より多くの情報をここで見つけました https://qiita.com/m_tani_july/items/4e107d7b7bed1f80d868著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .