Skip to content

Failed to start: The column wavoipToken does not exist in the current database. #1432

@paulocoutinhox

Description

@paulocoutinhox

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:

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

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions