<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>Question Re: How to connect On-Premise MySQL database using SAP CA... in Technology Q&amp;A</title>
    <link>https://community.sap.com/t5/technology-q-a/how-to-connect-on-premise-mysql-database-using-sap-capm-nodejs-app/qaa-p/14038087#M4906174</link>
    <description>Hi yogananda, Thanks for your kind response. I'm not using MySQL DB as backend DB for CAP service rather I'm fetching data from MySQL DB and storing into HANA Cloud DB. As NodeJS can connect to any DB to read and same I'm trying. I'll insert the data finally into HANA Cloud DB and UI on top of it for all CRUD and Analytics.</description>
    <pubDate>Sun, 09 Mar 2025 11:06:02 GMT</pubDate>
    <dc:creator>ramana_saps4hana43</dc:creator>
    <dc:date>2025-03-09T11:06:02Z</dc:date>
    <item>
      <title>How to connect On-Premise MySQL database using SAP CAPM NodeJS app?</title>
      <link>https://community.sap.com/t5/technology-q-a/how-to-connect-on-premise-mysql-database-using-sap-capm-nodejs-app/qaq-p/14037834</link>
      <description>&lt;P&gt;Hi Everyone,&lt;/P&gt;&lt;P&gt;we have a on-premise My SQL database where the data exists and we need to&amp;nbsp; fetch data from MySQL DB and store into HANA Cloud DB using CAPM NodeJS application on interval basis liek once in a day.&lt;/P&gt;&lt;P&gt;I'm able to connect to On-Premise MYSQL DB in Locally installed VS Code using NodeJS but when I'm trying the same in SAP BAS then getting error like "&lt;STRONG&gt;Error connecting to MySQL: Error: connect ECONNREFUSED 127.0.0.1:3306&lt;/STRONG&gt;". I have update my etc file locally but still error persists.&lt;/P&gt;&lt;P&gt;Also I maintained Cloud Connector configuration as below&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="ramana_saps4hana43_0-1741495842535.png" style="width: 400px;"&gt;&lt;img src="https://community.sap.com/t5/image/serverpage/image-id/234696i7B1B5C427EC36B0A/image-size/medium?v=v2&amp;amp;px=400" role="button" title="ramana_saps4hana43_0-1741495842535.png" alt="ramana_saps4hana43_0-1741495842535.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;also created a destination on top of it in BTP cockpit.&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="ramana_saps4hana43_1-1741495904137.png" style="width: 400px;"&gt;&lt;img src="https://community.sap.com/t5/image/serverpage/image-id/234697iECF16C2BCF4266F1/image-size/medium?v=v2&amp;amp;px=400" role="button" title="ramana_saps4hana43_1-1741495904137.png" alt="ramana_saps4hana43_1-1741495904137.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;I created a function in service.js file under srv folder&lt;/P&gt;&lt;DIV&gt;&lt;DIV&gt;&lt;FONT color="#FF0000"&gt;&lt;STRONG&gt;const { cds } = require('@sap/cds');&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT color="#FF0000"&gt;&lt;STRONG&gt;const { getDestination } = require('@sap-cloud-sdk/connectivity');&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT color="#FF0000"&gt;&lt;STRONG&gt;const mysql = require('mysql2/promise');&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;FONT color="#FF0000"&gt;&lt;STRONG&gt;module.exports = async (srv) =&amp;gt; {&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT color="#FF0000"&gt;&lt;STRONG&gt;&amp;nbsp; &amp;nbsp; srv.on('loadReadingsData', async (req) =&amp;gt; {&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT color="#FF0000"&gt;&lt;STRONG&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; try {&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT color="#FF0000"&gt;&lt;STRONG&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Get the destination from BTP Cockpit&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT color="#FF0000"&gt;&lt;STRONG&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; const destination = await getDestination({ destinationName: 'MySQLDB' });&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT color="#FF0000"&gt;&lt;STRONG&gt;&amp;nbsp; &amp;nbsp; &lt;/STRONG&gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT color="#FF0000"&gt;&lt;STRONG&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; const { URL, username, password, database } = destination.originalProperties;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT color="#FF0000"&gt;&lt;STRONG&gt;&amp;nbsp; &amp;nbsp;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT color="#FF0000"&gt;&lt;STRONG&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; console.log("connecting to EnerChart DB start");&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT color="#FF0000"&gt;&lt;STRONG&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // // Connect to the MySQL database using the details from the destination&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT color="#FF0000"&gt;&lt;STRONG&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; const connection = await mysql.createConnection({&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT color="#FF0000"&gt;&lt;STRONG&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; host: '127.0.0.1',&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT color="#FF0000"&gt;&lt;STRONG&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; port: 3306,&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT color="#FF0000"&gt;&lt;STRONG&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // host: URL,&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT color="#FF0000"&gt;&lt;STRONG&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; user: username,&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT color="#FF0000"&gt;&lt;STRONG&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; password: password,&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT color="#FF0000"&gt;&lt;STRONG&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; database: database,&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT color="#FF0000"&gt;&lt;STRONG&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // ssl: {&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT color="#FF0000"&gt;&lt;STRONG&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // ca: fs.readFileSync('/path/to/ca-cert.pem'),&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT color="#FF0000"&gt;&lt;STRONG&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // cert: fs.readFileSync('/path/to/client-cert.pem'),&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT color="#FF0000"&gt;&lt;STRONG&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // key: fs.readFileSync('/path/to/client-key.pem'),&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT color="#FF0000"&gt;&lt;STRONG&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // &amp;nbsp; &amp;nbsp; ciphers: 'TLS_AES_128_GCM_SHA256',&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT color="#FF0000"&gt;&lt;STRONG&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // &amp;nbsp; &amp;nbsp; rejectUnauthorized: true&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT color="#FF0000"&gt;&lt;STRONG&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // }&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT color="#FF0000"&gt;&lt;STRONG&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; });&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;FONT color="#FF0000"&gt;&lt;STRONG&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // console.log("Connected to MySQL!", connection.threadId);&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;FONT color="#FF0000"&gt;&lt;STRONG&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Query MySQL (example)&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT color="#FF0000"&gt;&lt;STRONG&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // const [rows, fields] = await connection.execute('SELECT * FROM MeterReadings');&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT color="#FF0000"&gt;&lt;STRONG&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // console.log(rows.length);&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;FONT color="#FF0000"&gt;&lt;STRONG&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Close the connection&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT color="#FF0000"&gt;&lt;STRONG&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // await connection.end();&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT color="#FF0000"&gt;&lt;STRONG&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; } catch (error) {&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT color="#FF0000"&gt;&lt;STRONG&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; console.error('Error connecting to MySQL:', error);&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT color="#FF0000"&gt;&lt;STRONG&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT color="#FF0000"&gt;&lt;STRONG&gt;&amp;nbsp; &amp;nbsp; })&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT color="#FF0000"&gt;&lt;STRONG&gt;}&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT color="#000000"&gt;&lt;STRONG&gt;Not able to connect with URL : http:mysql:3306 so i tried with direct IP address above.&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT color="#000000"&gt;Still not able to connect to On-premise MySQL DB. Also Can anyone suggest any approach for better security like Certificates or principle propagation etc.. in both BTP &amp;amp; MySQL DB to implement.&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT color="#000000"&gt;Can anyone please help/guide me to achieve the above scenario with best practices.&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT color="#000000"&gt;Thank you in advance.&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT color="#000000"&gt;Regards,&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT color="#000000"&gt;Ramana.&lt;/FONT&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sun, 09 Mar 2025 04:57:19 GMT</pubDate>
      <guid>https://community.sap.com/t5/technology-q-a/how-to-connect-on-premise-mysql-database-using-sap-capm-nodejs-app/qaq-p/14037834</guid>
      <dc:creator>ramana_saps4hana43</dc:creator>
      <dc:date>2025-03-09T04:57:19Z</dc:date>
    </item>
    <item>
      <title>Re: How to connect On-Premise MySQL database using SAP CA...</title>
      <link>https://community.sap.com/t5/technology-q-a/how-to-connect-on-premise-mysql-database-using-sap-capm-nodejs-app/qaa-p/14038008#M4906156</link>
      <description>&lt;P&gt;&lt;a href="https://community.sap.com/t5/user/viewprofilepage/user-id/845311"&gt;@ramana_saps4hana43&lt;/a&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;MySQL is not supported and will not be made available for support for CAP based applications with Nodejs or Java based..&lt;/P&gt;&lt;P&gt;Refer List of supported and Built in Database support for CAP&lt;/P&gt;&lt;P&gt;&lt;A href="https://cap.cloud.sap/docs/guides/databases" target="_blank"&gt;https://cap.cloud.sap/docs/guides/databases&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sun, 09 Mar 2025 08:14:06 GMT</pubDate>
      <guid>https://community.sap.com/t5/technology-q-a/how-to-connect-on-premise-mysql-database-using-sap-capm-nodejs-app/qaa-p/14038008#M4906156</guid>
      <dc:creator>Yogananda</dc:creator>
      <dc:date>2025-03-09T08:14:06Z</dc:date>
    </item>
    <item>
      <title>Re: How to connect On-Premise MySQL database using SAP CA...</title>
      <link>https://community.sap.com/t5/technology-q-a/how-to-connect-on-premise-mysql-database-using-sap-capm-nodejs-app/qaa-p/14038086#M4906173</link>
      <description>Hi yogananda,</description>
      <pubDate>Sun, 09 Mar 2025 11:04:04 GMT</pubDate>
      <guid>https://community.sap.com/t5/technology-q-a/how-to-connect-on-premise-mysql-database-using-sap-capm-nodejs-app/qaa-p/14038086#M4906173</guid>
      <dc:creator>ramana_saps4hana43</dc:creator>
      <dc:date>2025-03-09T11:04:04Z</dc:date>
    </item>
    <item>
      <title>Re: How to connect On-Premise MySQL database using SAP CA...</title>
      <link>https://community.sap.com/t5/technology-q-a/how-to-connect-on-premise-mysql-database-using-sap-capm-nodejs-app/qaa-p/14038087#M4906174</link>
      <description>Hi yogananda, Thanks for your kind response. I'm not using MySQL DB as backend DB for CAP service rather I'm fetching data from MySQL DB and storing into HANA Cloud DB. As NodeJS can connect to any DB to read and same I'm trying. I'll insert the data finally into HANA Cloud DB and UI on top of it for all CRUD and Analytics.</description>
      <pubDate>Sun, 09 Mar 2025 11:06:02 GMT</pubDate>
      <guid>https://community.sap.com/t5/technology-q-a/how-to-connect-on-premise-mysql-database-using-sap-capm-nodejs-app/qaa-p/14038087#M4906174</guid>
      <dc:creator>ramana_saps4hana43</dc:creator>
      <dc:date>2025-03-09T11:06:02Z</dc:date>
    </item>
    <item>
      <title>Re: How to connect On-Premise MySQL database using SAP CA...</title>
      <link>https://community.sap.com/t5/technology-q-a/how-to-connect-on-premise-mysql-database-using-sap-capm-nodejs-app/qaa-p/14038089#M4906175</link>
      <description>thanks for altering the questions posted with provided more revised content... As I see your Destination is still not be able reachable to the cloud to get the data from your local db</description>
      <pubDate>Sun, 09 Mar 2025 11:10:00 GMT</pubDate>
      <guid>https://community.sap.com/t5/technology-q-a/how-to-connect-on-premise-mysql-database-using-sap-capm-nodejs-app/qaa-p/14038089#M4906175</guid>
      <dc:creator>Yogananda</dc:creator>
      <dc:date>2025-03-09T11:10:00Z</dc:date>
    </item>
  </channel>
</rss>

