147 lines
4.6 KiB
Markdown
147 lines
4.6 KiB
Markdown
# Troubleshooting Database Connection Issues
|
|
|
|
## Error: "Invalid API key"
|
|
|
|
This error occurs when your Supabase API key is missing, incorrect, or expired.
|
|
|
|
### Solution 1: Use Direct PostgreSQL Connection (RECOMMENDED)
|
|
|
|
For heavy SQL queries (which this system uses extensively), a direct PostgreSQL connection is faster and more reliable.
|
|
|
|
1. **Get your database connection string from Supabase:**
|
|
- Go to Supabase Dashboard
|
|
- Navigate to **Settings > Database**
|
|
- Find **Connection String** section
|
|
- Copy the **URI** connection string
|
|
- It should look like: `postgresql://postgres:[password]@db.[project-ref].supabase.co:5432/postgres`
|
|
|
|
2. **Add to your `.env` file:**
|
|
```env
|
|
DATABASE_URL=postgresql://postgres:your_password@db.your-project-ref.supabase.co:5432/postgres
|
|
```
|
|
|
|
3. **Restart your server**
|
|
|
|
The system will automatically use the direct PostgreSQL connection when `DATABASE_URL` is set, which bypasses API key issues entirely.
|
|
|
|
### Solution 2: Fix Supabase API Keys
|
|
|
|
If you prefer to use Supabase client:
|
|
|
|
1. **Get your Supabase credentials:**
|
|
- Go to Supabase Dashboard
|
|
- Navigate to **Settings > API**
|
|
- Copy the following:
|
|
- **Project URL** → `SUPABASE_URL`
|
|
- **service_role key** (secret) → `SUPABASE_SERVICE_KEY` ⚠️ **Use this one, not anon key**
|
|
|
|
2. **Create/update `.env` file in `backend/` directory:**
|
|
```env
|
|
# Supabase Configuration
|
|
SUPABASE_URL=https://your-project-ref.supabase.co
|
|
SUPABASE_SERVICE_KEY=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9... (your service_role key)
|
|
|
|
# Optional: Direct PostgreSQL connection (recommended for heavy queries)
|
|
DATABASE_URL=postgresql://postgres:password@db.project-ref.supabase.co:5432/postgres
|
|
|
|
# Server Configuration
|
|
PORT=3010
|
|
NODE_ENV=development
|
|
|
|
# CORS Configuration
|
|
CORS_ORIGIN=http://localhost:5173
|
|
```
|
|
|
|
3. **Important Notes:**
|
|
- ⚠️ **Use `service_role` key, NOT `anon` key** for backend operations
|
|
- The `service_role` key has admin privileges and bypasses Row Level Security
|
|
- Never expose the `service_role` key in frontend code
|
|
- Keep your `.env` file in `.gitignore` (it should already be there)
|
|
|
|
4. **Restart your server:**
|
|
```bash
|
|
cd backend
|
|
npm run dev
|
|
```
|
|
|
|
### Solution 3: Verify Environment Variables
|
|
|
|
Check that your environment variables are being loaded:
|
|
|
|
1. **Verify `.env` file exists:**
|
|
```bash
|
|
ls -la backend/.env
|
|
```
|
|
|
|
2. **Check if variables are loaded (add temporarily to test):**
|
|
```javascript
|
|
// In backend/src/db.js, add temporarily:
|
|
console.log('SUPABASE_URL:', process.env.SUPABASE_URL ? 'SET' : 'MISSING');
|
|
console.log('SUPABASE_SERVICE_KEY:', process.env.SUPABASE_SERVICE_KEY ? 'SET' : 'MISSING');
|
|
console.log('DATABASE_URL:', process.env.DATABASE_URL ? 'SET' : 'MISSING');
|
|
```
|
|
|
|
3. **Make sure `.env` file is in the correct location:**
|
|
- Should be: `backend/.env`
|
|
- NOT: `.env` (root directory)
|
|
- NOT: `backend/src/.env`
|
|
|
|
### Common Issues
|
|
|
|
#### Issue: "Missing Supabase environment variables"
|
|
- **Cause:** `.env` file doesn't exist or variables are misspelled
|
|
- **Fix:** Create `.env` file with correct variable names (case-sensitive)
|
|
|
|
#### Issue: "Invalid API key" but key looks correct
|
|
- **Cause:** Using `anon` key instead of `service_role` key
|
|
- **Fix:** Use the `service_role` key from Supabase Dashboard > Settings > API
|
|
|
|
#### Issue: Connection works but queries fail
|
|
- **Cause:** Missing `exec_sql` RPC function in Supabase
|
|
- **Fix:** Use `DATABASE_URL` for direct PostgreSQL connection (recommended)
|
|
|
|
#### Issue: Environment variables not loading
|
|
- **Cause:** `.env` file in wrong location or `dotenv` not configured
|
|
- **Fix:** Ensure `.env` is in `backend/` directory and `dotenv.config()` is called in `db.js`
|
|
|
|
### Recommended Setup
|
|
|
|
For best performance with this trading system, use **direct PostgreSQL connection**:
|
|
|
|
```env
|
|
# Direct PostgreSQL Connection (RECOMMENDED)
|
|
DATABASE_URL=postgresql://postgres:your_password@db.your-project-ref.supabase.co:5432/postgres
|
|
|
|
# Optional: Supabase client (for simple queries)
|
|
SUPABASE_URL=https://your-project-ref.supabase.co
|
|
SUPABASE_SERVICE_KEY=your_service_role_key
|
|
```
|
|
|
|
This setup:
|
|
- ✅ Faster query execution
|
|
- ✅ No API key issues
|
|
- ✅ Direct SQL access
|
|
- ✅ Better for heavy analytical queries
|
|
|
|
### Testing Connection
|
|
|
|
After fixing your configuration, test the connection:
|
|
|
|
```bash
|
|
cd backend
|
|
npm run dev
|
|
```
|
|
|
|
You should see:
|
|
```
|
|
✅ Database connection successful (PostgreSQL direct)
|
|
```
|
|
|
|
Or:
|
|
```
|
|
✅ Database connection successful (Supabase)
|
|
```
|
|
|
|
If you still see errors, check the console output for specific error messages and refer to the troubleshooting steps above.
|
|
|