🎉Community Raffle - Win $25

An exclusive raffle opportunity for active members like you! Complete your profile, answer questions and get your first accepted badge to enter the raffle.
Join and Win

Can we pass Mysql database name and table name to dynamically through web url using macros?

User: "kamal_pradhan"
New Altair Community Member
Updated by Jocelyn
I am getting difficulties in passing the database connection detail to a RapidMiner process deployed as a webservice . I tried to use macros and even after providing correct connection details.

I keep on getting this error

de.rapidanalytics.ejb.service.ServiceDataSourceExceptionError executing process /home/proc_1/test for service test: Database error occurred: Could not connect: Access denied for user 'root'@'static.115.208.216.95.clients.your-server.de' (using password: YES)

Find more posts tagged with

Sort by:
1 - 4 of 41
    User: "Pavithra_Rao"
    New Altair Community Member
    @kamal_pradhan

    Firstly, please check if the credentials you are passing is correct. Because error indicates wrong credentials...

    Could you please give more details here?
    What's the database? Also how exactly your process is setup, like how you are passing the macro value, and in what part of the workflow you are using it. Since you are saying, you are tryng to give database connection details via macros?

    Please share Server error logs, available in following location:
    <server-home-directory>\log\server.log

    Cheers,
    Pavithra
    User: "curious95"
    New Altair Community Member
    @Pavithra_Rao

    Hi,

    What I'm trying to active passing the database details (url, username and password) through a created web-service using macro bindings. If I use a predefined connection in the server then the process works but If I try to specify the details through macros and parameters the following error occurs:


    com.rapidminer.operator.UserError: Database error occurred: Could not connect: Access denied for user 'root'@'localhost' (using password: YES)
    Current charset is UTF-8. If password has been set using other charset, consider using option 'passwordCharacterEncoding'
    at com.rapidminer.extension.jdbc.operator.io.DatabaseDataReader.getResultSet(DatabaseDataReader.java:115)
    at com.rapidminer.extension.jdbc.operator.io.DatabaseDataReader.createExampleSet(DatabaseDataReader.java:122)
    at com.rapidminer.operator.io.AbstractExampleSource.read(AbstractExampleSource.java:49)
    at com.rapidminer.extension.jdbc.operator.io.DatabaseDataReader.read(DatabaseDataReader.java:89)
    at com.rapidminer.extension.jdbc.operator.io.DatabaseDataReader.read(DatabaseDataReader.java:73)
    at com.rapidminer.operator.io.AbstractReader.doWork(AbstractReader.java:134)
    at com.rapidminer.operator.Operator.execute(Operator.java:1025)
    at com.rapidminer.operator.execution.SimpleUnitExecutor.execute(SimpleUnitExecutor.java:77)
    at com.rapidminer.operator.ExecutionUnit$2.run(ExecutionUnit.java:812)
    at com.rapidminer.operator.ExecutionUnit$2.run(ExecutionUnit.java:807)
    at java.security.AccessController.doPrivileged(Native Method)
    at com.rapidminer.operator.ExecutionUnit.execute(ExecutionUnit.java:807)
    at com.rapidminer.operator.OperatorChain.doWork(OperatorChain.java:428)
    at com.rapidminer.operator.Operator.execute(Operator.java:1025)
    at com.rapidminer.Process.execute(Process.java:1322)
    at com.rapidminer.Process.run(Process.java:1297)
    at com.rapidminer.Process.run(Process.java:1183)
    at com.rapidminer.Process.run(Process.java:1136)
    at com.rapidminer.Process.run(Process.java:1131)
    at com.rapidminer.Process.run(Process.java:1121)
    at com.rapidminer.execution.jobcontainer.execution.SimpleExecutor.executeProcess(SimpleExecutor.java:84)
    at com.rapidminer.execution.jobcontainer.EngineRunner.onApplicationEvent(EngineRunner.java:76)
    at com.rapidminer.execution.jobcontainer.EngineRunner.onApplicationEvent(EngineRunner.java:30)
    at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:172)
    at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:165)
    at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:139)
    at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:393)
    at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:347)
    at org.springframework.boot.context.event.EventPublishingRunListener.finished(EventPublishingRunListener.java:101)
    at org.springframework.boot.SpringApplicationRunListeners.callFinishedListener(SpringApplicationRunListeners.java:79)
    at org.springframework.boot.SpringApplicationRunListeners.finished(SpringApplicationRunListeners.java:72)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:305)
    at com.rapidminer.execution.jobcontainer.Application.main(Application.java:46)
    Caused by: java.sql.SQLInvalidAuthorizationSpecException: Could not connect: Access denied for user 'root'@'localhost' (using password: YES)
    Current charset is UTF-8. If password has been set using other charset, consider using option 'passwordCharacterEncoding'
    at org.mariadb.jdbc.internal.util.ExceptionMapper.get(ExceptionMapper.java:135)
    at org.mariadb.jdbc.internal.util.ExceptionMapper.getException(ExceptionMapper.java:101)
    at org.mariadb.jdbc.internal.util.ExceptionMapper.throwException(ExceptionMapper.java:91)
    at org.mariadb.jdbc.Driver.connect(Driver.java:109)
    at java.sql.DriverManager.getConnection(DriverManager.java:664)
    at java.sql.DriverManager.getConnection(DriverManager.java:208)
    at com.rapidminer.extension.jdbc.tools.jdbc.DatabaseHandler.connect(DatabaseHandler.java:304)
    at com.rapidminer.extension.jdbc.tools.jdbc.DatabaseHandler.getConnectedDatabaseHandler(DatabaseHandler.java:255)
    at com.rapidminer.extension.jdbc.tools.jdbc.DatabaseHandler.getConnectedDatabaseHandler(DatabaseHandler.java:247)
    at com.rapidminer.extension.jdbc.tools.jdbc.DatabaseHandler.getConnectedDatabaseHandler(DatabaseHandler.java:981)
    at com.rapidminer.extension.jdbc.operator.io.DatabaseDataReader.getResultSet(DatabaseDataReader.java:103)
    ... 32 common frames omitted
    Caused by: org.mariadb.jdbc.internal.util.dao.QueryException: Could not connect: Access denied for user 'root'@'localhost' (using password: YES)
    Current charset is UTF-8. If password has been set using other charset, consider using option 'passwordCharacterEncoding'
    at org.mariadb.jdbc.internal.protocol.AbstractConnectProtocol.authentication(AbstractConnectProtocol.java:569)
    at org.mariadb.jdbc.internal.protocol.AbstractConnectProtocol.handleConnectionPhases(AbstractConnectProtocol.java:503)
    at org.mariadb.jdbc.internal.protocol.AbstractConnectProtocol.connect(AbstractConnectProtocol.java:382)
    at org.mariadb.jdbc.internal.protocol.AbstractConnectProtocol.connectWithoutProxy(AbstractConnectProtocol.java:839)
    at org.mariadb.jdbc.internal.util.Utils.retrieveProxy(Utils.java:479)
    at org.mariadb.jdbc.Driver.connect(Driver.java:104)
    ... 39 common frames omitted


    Thanks



    Try something like this
    <?xml version="1.0" encoding="UTF-8"?><process version="8.2.000">
      <context>
        <input/>
        <output/>
        <macros>
          <macro>
            <key>url</key>
            <value/>
          </macro>
          <macro>
            <key>user</key>
            <value/>
          </macro>
          <macro>
            <key>pass</key>
            <value/>
          </macro>
        </macros>
      </context>
      <operator activated="true" class="process" compatibility="8.2.000" expanded="true" name="Process">
        <process expanded="true">
          <operator activated="true" class="jdbc_connectors:read_database" compatibility="8.2.000" expanded="true" height="68" name="Read Database" width="90" x="380" y="34">
            <parameter key="define_connection" value="url"/>
            <parameter key="database_url" value="%{url}"/>
            <parameter key="username" value="%{user}"/>
            <parameter key="password" value="ZGmujF5bm8M="/>
            <enumeration key="parameters"/>
          </operator>
          <connect from_op="Read Database" from_port="output" to_port="result 1"/>
          <portSpacing port="source_input 1" spacing="0"/>
          <portSpacing port="sink_result 1" spacing="0"/>
          <portSpacing port="sink_result 2" spacing="0"/>
        </process>
      </operator>
    </process>
    
    The only problem is that you can't pass the password directly through the macro since is encrypted by the RM core now. 
    @Pavithra_Rao I guess that´s the reason is says the user is not the right one.

    User: "curious95"
    New Altair Community Member
    @MarcoBarradas

    I think you correct. I tried with the same step and it works fine in the studio but fails in the server.