-
Couldn't load subscription status.
- Fork 4.6k
Closed
Labels
bugSomething isn't workingSomething isn't working
Description
Welcome!
- Yes, I have searched for similar issues on GitHub and found none.
What did you do?
Failed to start: The column wavoipToken does not exist in the current database.
evolution-api:
image: atendai/evolution-api:v2.2.3
restart: always
depends_on:
- mysql
environment:
# Banco de dados interno
DATABASE_ENABLED: true
DATABASE_PROVIDER: mysql
DATABASE_CONNECTION_URI: mysql://bla-cla-bla
DATABASE_CONNECTION_DB_PREFIX_NAME: evolution
# Autenticação
AUTHENTICATION_TYPE: apikey
AUTHENTICATION_API_KEY: xxx
# Configuração do servidor
SERVER_URL: https://domain.com
# WebSocket
WEBSOCKET_ENABLED: true
WEBSOCKET_GLOBAL_EVENTS: true
# Informações do cliente
CONFIG_SESSION_PHONE_CLIENT: EvolutionAPI
CONFIG_SESSION_PHONE_NAME: Chrome
# Logs
LOG_LEVEL: ERROR,WARN,DEBUG,INFO,LOG,VERBOSE,DARK,WEBHOOKS
LOG_COLOR: true
LOG_BAILEYS: trace
# Armazenamento temporário
STORE_MESSAGES: true
STORE_CONTACTS: true
STORE_CHATS: true
CLEAN_STORE_CLEANING_INTERVAL: 3600
CLEAN_STORE_MESSAGES: true
CLEAN_STORE_CONTACTS: true
CLEAN_STORE_CHATS: true
# Armazenamento persistente (MySQL)
DATABASE_SAVE_DATA_INSTANCE: true
DATABASE_SAVE_DATA_NEW_MESSAGE: true
DATABASE_SAVE_DATA_CONTACTS: true
DATABASE_SAVE_DATA_CHATS: true
# Webhook
WEBHOOK_GLOBAL_ENABLED: true
WEBHOOK_GLOBAL_URL: https://domain.com/xyz/xxx
# CORS
CORS_ORIGIN: "*"
CORS_METHODS: POST,GET,PUT,DELETE
CORS_CREDENTIALS: true
# Cache
CACHE_REDIS_ENABLED: false
CACHE_LOCAL_ENABLED: true
volumes:
- ./evolution-api/data/instances:/evolution/instances
- ./evolution-api/data/store:/evolution/store
What did you expect?
Work
What did you observe instead of what you expected?
Screenshots/Videos
No response
Which version of the API are you using?
2.2.3
What is your environment?
Linux
Other environment specifications
If applicable, paste the log output
evolution-api-1 | 2025-05-10T06:40:09.957499624Z [Evolution API] v2.2.3 170 - Sat May 10 2025 03:40:09 VERBOSE [CacheEngine] [string] LocalCache initialized for groups
evolution-api-1 | 2025-05-10T06:40:09.958466152Z [Evolution API] v2.2.3 170 - Sat May 10 2025 03:40:09 VERBOSE [CacheService] [string] cacheservice created using cache engine: ae
evolution-api-1 | 2025-05-10T06:40:10.199827510Z [Evolution API] v2.2.3 170 - Sat May 10 2025 03:40:10 VERBOSE [CacheEngine] [string] LocalCache initialized for instance
evolution-api-1 | 2025-05-10T06:40:10.199959802Z [Evolution API] v2.2.3 170 - Sat May 10 2025 03:40:10 VERBOSE [CacheService] [string] cacheservice created using cache engine: ae
evolution-api-1 | 2025-05-10T06:40:10.199969032Z [Evolution API] v2.2.3 170 - Sat May 10 2025 03:40:10 VERBOSE [CacheEngine] [string] LocalCache initialized for baileys
evolution-api-1 | 2025-05-10T06:40:10.199973042Z [Evolution API] v2.2.3 170 - Sat May 10 2025 03:40:10 VERBOSE [CacheService] [string] cacheservice created using cache engine: ae
evolution-api-1 | 2025-05-10T06:40:10.211881220Z [Evolution API] v2.2.3 170 - Sat May 10 2025 03:40:10 INFO [WA MODULE] [string] Module - ON
evolution-api-1 | 2025-05-10T06:40:10.508076948Z [Evolution API] v2.2.3 170 - Sat May 10 2025 03:40:10 INFO [PrismaRepository] [string] Repository:Prisma - ON
evolution-api-1 | 2025-05-10T06:40:10.515542924Z [Evolution API] v2.2.3 170 - Sat May 10 2025 03:40:10 INFO [WebsocketController] [string] Socket.io initialized
evolution-api-1 | 2025-05-10T06:40:10.522437446Z [Evolution API] v2.2.3 170 - Sat May 10 2025 03:40:10 LOG [SERVER] [string] HTTP - ON: 8080
evolution-api-1 | 2025-05-10T06:40:21.096536671Z create instance {
evolution-api-1 | 2025-05-10T06:40:21.096575351Z instanceName: 'xxx',
evolution-api-1 | 2025-05-10T06:40:21.096578741Z integration: 'WHATSAPP-BAILEYS',
evolution-api-1 | 2025-05-10T06:40:21.096582031Z token: 'xxx-yyy-zzz-xxx'
evolution-api-1 | 2025-05-10T06:40:21.096585361Z }
evolution-api-1 | 2025-05-10T06:40:21.129465937Z [Evolution API] v2.2.3 170 - Sat May 10 2025 03:40:21 ERROR [InstanceController] [string]
evolution-api-1 | 2025-05-10T06:40:21.129505307Z Invalid `S.integrationSession.update()` invocation in
evolution-api-1 | 2025-05-10T06:40:21.129510697Z /evolution/dist/main.js:161:10171
evolution-api-1 | 2025-05-10T06:40:21.129514006Z
evolution-api-1 | 2025-05-10T06:40:21.129516827Z 158 `));let g="";d.bold&&(g+="*"),d.italic&&(g+="_"),d.underline&&(g+="~");let m=`${g}${u}${g.split("").reverse().join("")}`;return d.url&&(m=d.children[0]?.text?`[${m}]
evolution-api-1 | 2025-05-10T06:40:21.129520636Z 159 (${d.url})`:`${d.url}`),m}async function l(d,u,g,m,h,y,w,S){for(let E of m){if(E.type==="text"){let b="";for(let C of E.content.richText){for(let N of C.children)b+=w(N);b+=`
evolution-api-1 | 2025-05-10T06:40:21.129525697Z 160 `}if(b=b.replace(/\*\*/g,"").replace(/__/,"").replace(/~~/,"").replace(/\n$/,""),b=b.replace(/\n$/,""),b.includes("[list]")){let C={number:s.split("@")[0],title:"",description:"",buttonText:"",footerText:"",sections:[]},N=b.match(/\[title\]([\s\S]*?)(?=\[description\])/),_=b.match(/\[description\]([\s\S]*?)(?=\[buttonText\])/),x=b.match(/\[buttonText\]([\s\S]*?)(?=\[footerText\])/),L=b.match(/\[footerText\]([\s\S]*?)(?=\[menu\])/);N&&(C.title=N[1].trim()),_&&(C.description=_[1].trim()),x&&(C.buttonText=x[1].trim()),L&&(C.footerText=L[1].trim());let W=b.match(/\[menu\]([\s\S]*?)\[\/menu\]/)?.[1];if(W){let G=W.match(/\[section\]([\s\S]*?)(?=\[section\]|\[\/section\]|\[\/menu\])/g);G&&G.forEach(K=>{let V=K.match(/title: (.*?)(?:\n|$)/)?.[1]?.trim(),$=K.match(/\[row\]([\s\S]*?)(?=\[row\]|\[\/row\]|\[\/section\]|\[\/menu\])/g),X={title:V,rows:$?.map(Cn=>({title:Cn.match(/title: (.*?)(?:\n|$)/)?.[1]?.trim(),description:Cn.match(/description: (.*?)(?:\n|$)/)?.[1]?.trim(),rowId:Cn.match(/rowId: (.*?)(?:\n|$)/)?.[1]?.trim()}))||[]};C.sections.push(X)})}await d.listMessage(C)}else if(b.includes("[buttons]")){let C={number:s.split("@")[0],thumbnailUrl:void 0,title:"",description:"",footer:"",buttons:[]},N=b.match(/\[thumbnailUrl\]([\s\S]*?)(?=\[title\])/),_=b.match(/\[title\]([\s\S]*?)(?=\[description\])/),x=b.match(/\[description\]([\s\S]*?)(?=\[footer\])/),L=b.match(/\[footer\]([\s\S]*?)(?=\[(?:reply|pix|copy|call|url))/);_&&(C.title=_[1].trim()),N&&(C.thumbnailUrl=N[1].trim()),x&&(C.description=x[1].trim()),L&&(C.footer=L[1].trim());let W={reply:/\[reply\]([\s\S]*?)(?=\[(?:reply|pix|copy|call|url)|$)/g,pix:/\[pix\]([\s\S]*?)(?=\[(?:reply|pix|copy|call|url)|$)/g,copy:/\[copy\]([\s\S]*?)(?=\[(?:reply|pix|copy|call|url)|$)/g,call:/\[call\]([\s\S]*?)(?=\[(?:reply|pix|copy|call|url)|$)/g,url:/\[url\]([\s\S]*?)(?=\[(?:reply|pix|copy|call|url)|$)/g};for(let[G,K]of Object.entries(W)){let V;for(;(V=K.exec(b))!==null;){let $=V[1].trim(),X={type:G};switch(G){case"pix":X.currency=$.match(/currency: (.*?)(?:\n|$)/)?.[1]?.trim(),X.name=$.match(/name: (.*?)(?:\n|$)/)?.[1]?.trim(),X.keyType=$.match(/keyType: (.*?)(?:\n|$)/)?.[1]?.trim(),X.key=$.match(/key: (.*?)(?:\n|$)/)?.[1]?.trim();break;case"reply":X.displayText=$.match(/displayText: (.*?)(?:\n|$)/)?.[1]?.trim(),X.id=$.match(/id: (.*?)(?:\n|$)/)?.[1]?.trim();break;case"copy":X.displayText=$.match(/displayText: (.*?)(?:\n|$)/)?.[1]?.trim(),X.copyCode=$.match(/copyCode: (.*?)(?:\n|$)/)?.[1]?.trim();break;case"call":X.displayText=$.match(/displayText: (.*?)(?:\n|$)/)?.[1]?.trim(),X.phoneNumber=$.match(/phone: (.*?)(?:\n|$)/)?.[1]?.trim();break;case"url":X.displayText=$.match(/displayText: (.*?)(?:\n|$)/)?.[1]?.trim(),X.url=$.match(/url: (.*?)(?:\n|$)/)?.[1]?.trim();break}Object.keys(X).length>1&&C.buttons.push(X)}}await d.buttonMessage(C)}else await d.textMessage({number:s.split("@")[0],delay:g?.delayMessage||1e3,text:b},!1);H("/message/sendText")}E.type==="image"&&(await d.mediaMessage({number:s.split("@")[0],delay:g?.delayMessage||1e3,mediatype:"image",media:E.content.url},null,!1),H("/message/sendMedia")),E.type==="video"&&(await d.mediaMessage({number:s.split("@")[0],delay:g?.delayMessage||1e3,mediatype:"video",media:E.content.url},null,!1),H("/message/sendMedia")),E.type==="audio"&&(await d.audioWhatsapp({number:s.split("@")[0],delay:g?.delayMessage||1e3,encoding:!0,audio:E.content.url},!1),H("/message/sendWhatsAppAudio"));let I=a(y,E.id);I&&await new Promise(b=>setTimeout(b,I*1e3))}if(console.log("input",h),h){if(h.type==="choice input"){let E="",I=h.items;for(let b of I)E+=`\u25B6\uFE0F ${b.content}
evolution-api-1 | 2025-05-10T06:40:21.129555777Z → 161 `;if(E=E.replace(/\n$/,""),E.includes("[list]")){let b={number:s.split("@")[0],title:"",description:"",buttonText:"",footerText:"",sections:[]},C=E.match(/\[title\]([\s\S]*?)(?=\[description\])/),N=E.match(/\[description\]([\s\S]*?)(?=\[buttonText\])/),_=E.match(/\[buttonText\]([\s\S]*?)(?=\[footerText\])/),x=E.match(/\[footerText\]([\s\S]*?)(?=\[menu\])/);C&&(b.title=C[1].trim()),N&&(b.description=N[1].trim()),_&&(b.buttonText=_[1].trim()),x&&(b.footerText=x[1].trim());let L=E.match(/\[menu\]([\s\S]*?)\[\/menu\]/)?.[1];if(L){let W=L.match(/\[section\]([\s\S]*?)(?=\[section\]|\[\/section\]|\[\/menu\])/g);W&&W.forEach(G=>{let K=G.match(/title: (.*?)(?:\n|$)/)?.[1]?.trim(),V=G.match(/\[row\]([\s\S]*?)(?=\[row\]|\[\/row\]|\[\/section\]|\[\/menu\])/g),$={title:K,rows:V?.map(X=>({title:X.match(/title: (.*?)(?:\n|$)/)?.[1]?.trim(),description:X.match(/description: (.*?)(?:\n|$)/)?.[1]?.trim(),rowId:X.match(/rowId: (.*?)(?:\n|$)/)?.[1]?.trim()}))||[]};b.sections.push($)})}await d.listMessage(b)}else if(E.includes("[buttons]")){let b={number:s.split("@")[0],thumbnailUrl:void 0,title:"",description:"",footer:"",buttons:[]},C=E.match(/\[thumbnailUrl\]([\s\S]*?)(?=\[title\])/),N=E.match(/\[title\]([\s\S]*?)(?=\[description\])/),_=E.match(/\[description\]([\s\S]*?)(?=\[footer\])/),x=E.match(/\[footer\]([\s\S]*?)(?=\[(?:reply|pix|copy|call|url))/);N&&(b.title=N[1].trim()),C&&(b.thumbnailUrl=C[1].trim()),_&&(b.description=_[1].trim()),x&&(b.footer=x[1].trim());let L={reply:/\[reply\]([\s\S]*?)(?=\[(?:reply|pix|copy|call|url)|$)/g,pix:/\[pix\]([\s\S]*?)(?=\[(?:reply|pix|copy|call|url)|$)/g,copy:/\[copy\]([\s\S]*?)(?=\[(?:reply|pix|copy|call|url)|$)/g,call:/\[call\]([\s\S]*?)(?=\[(?:reply|pix|copy|call|url)|$)/g,url:/\[url\]([\s\S]*?)(?=\[(?:reply|pix|copy|call|url)|$)/g};for(let[W,G]of Object.entries(L)){let K;for(;(K=G.exec(E))!==null;){let V=K[1].trim(),$={type:W};switch(W){case"pix":$.currency=V.match(/currency: (.*?)(?:\n|$)/)?.[1]?.trim(),$.name=V.match(/name: (.*?)(?:\n|$)/)?.[1]?.trim(),$.keyType=V.match(/keyType: (.*?)(?:\n|$)/)?.[1]?.trim(),$.key=V.match(/key: (.*?)(?:\n|$)/)?.[1]?.trim();break;case"reply":$.displayText=V.match(/displayText: (.*?)(?:\n|$)/)?.[1]?.trim(),$.id=V.match(/id: (.*?)(?:\n|$)/)?.[1]?.trim();break;case"copy":$.displayText=V.match(/displayText: (.*?)(?:\n|$)/)?.[1]?.trim(),$.copyCode=V.match(/copyCode: (.*?)(?:\n|$)/)?.[1]?.trim();break;case"call":$.displayText=V.match(/displayText: (.*?)(?:\n|$)/)?.[1]?.trim(),$.phoneNumber=V.match(/phone: (.*?)(?:\n|$)/)?.[1]?.trim();break;case"url":$.displayText=V.match(/displayText: (.*?)(?:\n|$)/)?.[1]?.trim(),$.url=V.match(/url: (.*?)(?:\n|$)/)?.[1]?.trim();break}Object.keys($).length>1&&b.buttons.push($)}}await d.buttonMessage(b)}else await d.textMessage({number:s.split("@")[0],delay:g?.delayMessage||1e3,text:E},!1);H("/message/sendText")}await S.integrationSession.update(
evolution-api-1 | 2025-05-10T06:40:21.129573987Z The column `wavoipToken` does not exist in the current database.
Additional Notes
Something related to:
evolution-api/prisma/mysql-schema.prisma
Line 267 in 427c994
| wavoipToken String? @db.VarChar(100) |
evolution-api-1 | 2025-05-10T06:40:21.129573987Z The column `wavoipToken` does not exist in the current database.
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't working