supabase_key 관련
62
작성한 질문수 6
강사님 답변처럼 SUPABASE_SERVICE_ROLE_KEY 복사하고 붙인 후 실행 했는데도 아래처럼 나오네요. 무시하고 계속 수업 진도를 나갈려고 하는데 내가 워낙 쌩 초보라 13번째 강의에서도 또 언급되길래 계속 무시하고 수업을 끝까지 들으면 해결 할 수 있는지 의심스럽습니다. 그리고 localhost:8000/docs 가 강사님 처럼 열리지 않네요... ㅠㅠ
"사이트에 연결할 수 없음. localhost에서 연결을 거부했습니다"라고 하네요
PS C:\박영준\banbu-stocktrading-final> python run.py
⚠ SUPABASE_SERVICE_ROLE_KEY 미설정 - anon 키 사용 중. RLS가 켜져 있으면 쓰기가 차단될 수 있 습니다.
Supabase URL: https://fohjixoviclcuwdtadxf.supabase.co
INFO: Started server process [23136]
INFO: Waiting for application startup.
서비스 시작 시 경제 데이터 수집을 즉시 실행합니다...
경제 지표 및 주가 데이터 업데이트 작업 시작...
2026-07-27 16:39:01,751 - httpx - INFO - HTTP Request: GET https://fohjixoviclcuwdtadxf.supabase.co/rest/v1/economic_and_stock_data?select=%EB%82%A0%EC%A7%9C&order=%EB%82%A0%EC%A7%9C.desc&limit=1 "HTTP/2 403 Forbidden"
마지막 수집 날짜 조회 중 오류 발생: {'message': 'permission denied for table economic_and_stock_data', 'code': '42501', 'hint': 'Grant the required privileges to the current role with: GRANT SELECT ON public.economic_and_stock_data TO service_role;', 'details': None}
2026-07-27 16:39:01,798 - httpx - INFO - HTTP Request: GET https://fohjixoviclcuwdtadxf.supabase.co/rest/v1/economic_and_stock_data?select=%2A&%EB%82%A0%EC%A7%9C=eq.2005-12-31 "HTTP/2 403 Forbidden"
경제 데이터 업데이트 중 오류 발생: {'message': 'permission denied for table economic_and_stock_data', 'code': '42501', 'hint': 'Grant the required privileges to the current role with: GRANT SELECT ON public.economic_and_stock_data TO service_role;', 'details': None}
Traceback (most recent call last):
File "C:\박영준\banbu-stocktrading-final\app\services\economic_service.py", line 134, in update_economic_data_in_background
prev_data_response = supabase.table("economic_and_stock_data").select("*").eq("날짜", previous_date).execute()
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^
File "C:\Users\박종한\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\postgrest\_sync\request_builder.py", line 96, in execute
raise APIError(dict(json_obj))
postgrest.exceptions.APIError: {'message': 'permission denied for table economic_and_stock_data', 'code': '42501', 'hint': 'Grant the required privileges to the current role with: GRANT SELECT ON public.economic_and_stock_data TO service_role;', 'details': None}
ERROR: Traceback (most recent call last):
File "C:\박영준\banbu-stocktrading-final\app\services\economic_service.py", line 134, in update_economic_data_in_background
prev_data_response = supabase.table("economic_and_stock_data").select("*").eq("날짜", previous_date).execute()
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^
File "C:\Users\박종한\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\postgrest\_sync\request_builder.py", line 96, in execute
raise APIError(dict(json_obj))
postgrest.exceptions.APIError: {'message': 'permission denied for table economic_and_stock_data', 'code': '42501', 'hint': 'Grant the required privileges to the current role with: GRANT SELECT ON public.economic_and_stock_data TO service_role;', 'details': None}
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Users\박종한\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\starlette\routing.py", line 638, in lifespan
async with self.lifespan_context(app) as maybe_state:
~~~~~~~~~~~~~~~~~~~~~^^^^^
File "C:\Users\박종한\AppData\Local\Python\pythoncore-3.14-64\Lib\contextlib.py", line 214, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
async with original_context(app) as maybe_original_state:
async with original_context(app) as maybe_original_state:
~~~~~~~~~~~~~~~~^^^^^
async with original_context(app) as maybe_original_state:
~~~~~~~~~~~~~~~~^^^^^
File "C:\Users\박종한\AppData\Local\Python\pythoncore-3.14-64\Lib\contextlib.py", line 214, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "C:\박영준\banbu-stocktrading-final\app\main.py", line 18, in lifespan
await startup()
File "C:\박영준\banbu-stocktrading-final\app\main.py", line 48, in startup
await update_economic_data_in_background()
File "C:\박영준\banbu-stocktrading-final\app\services\economic_service.py", line 251, in update_economic_data_in_background
raise Exception(f"경제 데이터 업데이트 중 오류: {str(e)}")
Exception: 경제 데이터 업데이트 중 오류: {'message': 'permission denied for table economic_and_stock_data', 'code': '42501', 'hint': 'Grant the required privileges to the current role with: GRANT SELECT ON public.economic_and_stock_data TO service_role;', 'details': None}
답변 3
0
안녕하세요, @박영준님.
Traceback을 보면 startup(lifespan) 단계에서 403 예외가 발생해 서버가 아예 뜨지 못하고 죽습니다. 그래서 "연결을 거부했습니다"가 나오는 겁니다.
SQL 실행 후 서버가 정상 기동되면 /docs도 열립니다.
@박영준 님께서 이전 답변에 댓글로 답변 달아주신 부분에 제가 상세 가이드 작성해놨으니 확인 부탁드립니다.
먼저 아래 내용 확인해주세욥~
터미널 환경에서
git pull명령을 통해 레포지토리에 있는 코드를 다시 받아주세요.sql/errorfix.sql전체 복사 → Supabase 대시보드 SQL Editor에 붙여넣고 Runpython run.py재실행 → 403 사라지고 데이터 수집 시작되는지 확인브라우저에서
localhost:8000/docs접속 (열리는게 정상입니다. 열리지 않는다면 에러 메시지 지금처럼 드래그해주세요~)
.env는 SUPABASE_KEY는 anon 키로 되돌리고 SUPABASE_SERVICE_ROLE_KEY= 에 Service Role Key 넣어주면 됩니다.
그래도 안되시면 편하게 다시 질문주세요~
그리고 강의는 쭉 들어주시면 됩니다 ㅎㅎ
오늘 기준으로도 제가 클라우드 환경에서 정상적으로 자동매매 돌리고 있으니 서비스나 소스에 문제가 있는 것이 아니니 걱정하지 않으셔도 됩니다.
마지막까지 들으시고 안되시는 부분이 있으시다면 어떻게든 해결할 수 있도록 도움 드릴 것이니 걱정하지 않으셔도 됩니다.
감사합니다.
1
강사님 말씀처럼 했습니다.
제대로 했는지 몰라서 아래에 터미널창 내용을 복사해 왔습니다.
글고 브라우저에 localhost:8000/docs 를 치고 접속을 시도했는데 앞 전 상황과 같습니다.
PS C:\박영준\banbu-stocktrading-final> git pull
remote: Enumerating objects: 21, done.
remote: Counting objects: 100% (21/21), done.
remote: Compressing objects: 100% (12/12), done.
remote: Total 12 (delta 8), reused 0 (delta 0), pack-reused 0 (from 0)
Unpacking objects: 100% (12/12), 3.28 KiB | 39.00 KiB/s, done.
From https://gitlab.com/banbu3/banbu-stocktrading-final
7635781..7e3482f main -> origin/main
Updating 7635781..7e3482f
Fast-forward
app/db/supabase.py | 21 +++++++++++++++++++++
db_backup/schema/create_all_tables.sql | 14 ++++++++++++++
sql/errorfix.sql | 11 +++++++++++
3 files changed, 46 insertions(+)
PS C:\박영준\banbu-stocktrading-final> python run.py
Traceback (most recent call last):
File "C:\박영준\banbu-stocktrading-final\run.py", line 4, in <module>
uvicorn.run("app.main:app", host="0.0.0.0", port=8000, reload=False)
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\박종한\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\uvicorn\main.py", line 609, in run
config.load_app()
~~~~~~~~~~~~~~~^^
File "C:\Users\박종한\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\uvicorn\config.py", line 427, in load_app
return import_from_string(self.app)
File "C:\Users\박종한\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\uvicorn\importer.py", line 19, in import_from_string
module = importlib.import_module(module_str)
File "C:\Users\박종한\AppData\Local\Python\pythoncore-3.14-64\Lib\importlib\__init__.py", line 88, in import_module
return bootstrap.gcd_import(name[level:], package, level)
~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "<frozen importlib._bootstrap>", line 1406, in gcdimport
File "<frozen importlib._bootstrap>", line 1371, in findand_load
File "<frozen importlib._bootstrap>", line 1342, in findand_load_unlocked
File "<frozen importlib._bootstrap>", line 938, in loadunlocked
File "<frozen importlib._bootstrap_external>", line 759, in exec_module
File "<frozen importlib._bootstrap>", line 491, in callwith_frames_removed
File "C:\박영준\banbu-stocktrading-final\app\main.py", line 4, in <module>
from app.api.api import api_router
File "C:\박영준\banbu-stocktrading-final\app\api\api.py", line 2, in <module>
from app.api.routes.stock_recommendations import router as stock_recommendations_router
File "C:\박영준\banbu-stocktrading-final\app\api\routes\stock_recommendations.py", line 2, in <module>
from app.services.stock_recommendation_service import StockRecommendationService
File "C:\박영준\banbu-stocktrading-final\app\services\stock_recommendation_service.py", line 8, in <module>
from app.db.supabase import supabase
File "C:\박영준\banbu-stocktrading-final\app\db\supabase.py", line 5, in <module>
from app.core.config import settings
File "C:\박영준\banbu-stocktrading-final\app\core\config.py", line 109, in <module>
settings = Settings()
File "C:\박영준\banbu-stocktrading-final\app\core\config.py", line 86, in init
super().__init__(**kwargs)
, in init
super().__init__(**__pydantic_self__.__class__._settings_build_values(sources, init_kwargs))
~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\박종한\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\pydantic\main.py", line 263, in init
validated_self = self.__pydantic_validator__.validate_python(data, self_instance=self)
pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
SUPABASE_SEVICE_ROLE_KEY
Extra inputs are not permitted [type=extra_forbidden, input_value='eyJhbGciOiJIUzI1NiIsInR5...wuzJtDE-KZyPTkm1awcZ5v4', input_type=str]
For further information visit https://errors.pydantic.dev/2.13/v/extra_forbidden


그리고 cursor를 실행할 때 항상 초기화면이 위 사진처럼 뜨던데 아래 사진처럼 초기화면이 뜨게 할 수 있는 방법이 있나요?
0
안녕하세요 박영준님!
우선 커서는 IDE가 업데이트 된 것이어서 저도 그렇게 로딩하고 있습니다.. ㅠ
에러 로그를 보시면:
.env 파일의 변수명에 오타가 있습니다. SUPABASE_SEVICE_ROLE_KEY라고 되어 있는데, SERVICE에서 R이 하나 빠져 있는 것 같습니다.
1️⃣ .env 파일을 열어 해당 줄의 변수명을 아래와 같이 정확히 수정해 주세요 (키 값은 그대로 두시면 됩니다):
SUPABASE_SERVICE_ROLE_KEY=eyJ...(지금 넣어두신 키 그대로)
2️⃣ 터미널에서 git pull 한 번 더 받아주세요. 같은 실수로 서버가 아예 멈추는 일이 없도록 방어 코드를 추가해 두었습니다.
3️⃣ python run.py 재실행 후 아래 두 가지를 확인해 주세요:
SUPABASE_SERVICE_ROLE_KEY 미설정" 경고가 사라졌는지
Supabase 키 role: service_role 로그가 찍히는지
4️⃣ 이전에 안내드린 sql/errorfix.sql을 아직 Supabase SQL Editor에서 실행 안 하셨다면 이것도 꼭 실행해 주세요. (이미 하셨다면 넘어가시면 됩니다)
여기까지 하면 403 에러 없이 데이터 수집이 시작되고, localhost:8000/docs도 정상적으로 열릴 겁니다.
혹시 그래도 안 되면 지금처럼 터미널 내용 전체를 복사해서 올려주세요.
이번처럼 로그만 있으면 바로 원인을 찾아드릴 수 있습니다. 😊
알파벤티지 sleep(5) 관련 문의
0
3
0
실전 계좌에서 운영하고 계신 분 계신가요?
1
16
2
클로드
0
37
2
pip install -r requirements.txt
0
44
2
명령 프롬프트
0
34
2
slack 알림 연동 강의 관련
1
66
2
python run.py 실행시 에러 문제
1
89
2
커서창
1
61
2
cursor 환경
1
61
2
개발 환경 준비와 프로젝트 구조 강의 관련
1
55
2
저장 공간
1
56
2
colab 코드 실행시 error
1
49
2
llm_decision_logs 저장 실패(실적 컬럼 불일치)를 어떻게 해결할까요?
2
73
4
kaggle notebook에 service key 설정이 누락된 것 같습니다
1
63
2
주말에 실행할 경우 update_economic_data_in_background에 로직 변경 필요성
1
54
1
프로그램 실행시간에 대한 질문
1
58
2
비중 및 매수 종목수 조정.
1
61
2
Claude api가 소식 동기화가 늦는 문제
1
73
2
슬롯 관련 문의
1
49
2
실제 계좌 잔고 및 테스트중에
1
107
4
안녕하세요
1
91
3
매일 사용시 토큰사용량
1
110
2
LLM판단에 문제가 있는 것 같습니다
1
64
2
실습 2인데 커서아이디 같은거 다운로드 안내같은건 따로없나요??
1
53
2





