Configuring Relational Databases

Overview

This article provides guidance on how to configre relational databases in Appian. Confiuring relational databases brings your information together in a meaningful way and allows you to manage your data more efficiently.

Configuring Data Sources

The process for creating data sources differs for each supported application server.

For JBoss

There are three steps unique to creating a data source in JBoss:

  1. Install the driver
  2. Configure a security domain
  3. Enter the data source property values

If you are using the configure script to manage your Appian and JBoss configurations, some of the steps in this document are already taken care of for you. They are noted below. Also, when using the configure script, make the changes to the corresponding files in the configuration repository instead of in <JBOSS_HOME> as documented here. Then deploy the files using the configure script.

Install RDBMS Driver

Install one of the supported RDBMS drivers listed in the link below. Other databases and drivers can be configured, but are not supported.

See also: Supported Databases.

To install the driver, first create the appropriate directory as listed below, and place the driver .jar file in it. If you are using the configure script, create the directory in the corresponding configuration repository directory (<REPO_HOME>/bin/jboss/jboss-eap-<ver>) instead of the <JBOSS_HOME> directory.

Database Driver JAR location Module name
MySQL <JBOSS_HOME>/modules/com/mysql/jdbc/main/ com.mysql.jdbc
Oracle <JBOSS_HOME>/modules/oracle/jdbc/main/ oracle.jdbc
SQL Server <JBOSS_HOME>/modules/com/microsoft/sqlserver/jdbc/main/ com.microsoft.sqlserver.jdbc
DB2 <JBOSS_HOME>/modules/com/ibm/db2/jcc/main/ com.ibm.db2.jcc

In that same directory, create a module.xml file, following the example below. Update name attribute to have the module name of the appropriate database, as listed in the table above, and change the path attribute in the <resource-root> element to match the exact name of the connector jar you downloaded.

For example, a module.xml file for MySQL would look like the following:

1
2
3
4
5
6
7
8
9
<module xmlns="urn:jboss:module:1.0" name="com.mysql.jdbc">
  <resources>
    <resource-root path="mysql-connector-java-5.1.40-bin.jar"/>
  </resources>
  <dependencies>
    <module name="javax.api"/>
    <module name="javax.transaction.api"/>
  </dependencies>
</module>

The module.xml for SQL Server requires an addional module when using SQL Server Driver 6.0 or later:

1
2
3
4
5
6
7
8
9
10
<module xmlns="urn:jboss:module:1.0" name="com.microsoft.sqlserver.jdbc">
  <resources>
    <resource-root path="sqljdbc42.jar"/>
  </resources>
  <dependencies>
    <module name="javax.api"/>
    <module name="javax.transaction.api"/>
    <module name="javax.xml.bind.api"/>
  </dependencies>
</module>

In the <JBOSS_HOME>/standalone/configuration/standalone.xml configuration file for JBoss EAP 6.4, replace the urn:jboss:domain:datasources:1.2 subsystem tag with the appropriate database-specific driver reference as shown below.

The standalone.xml included in the configure script includes all of the drivers shown below. If you are using the configure script, you must uncomment the appropriate driver (or drivers) and leave the rest commented out. The MySQL driver is uncommented by default.

Note: The standalone.xml deployed by the configure script contains the H2 datasource and driver configuration that are shipped by default with JBoss. These can be optionally removed from the standalone.xml.<your_environment> in your configuration repository prior to deploying to JBoss.

MySQL

1
2
3
4
5
6
7
8
9
10
<subsystem xmlns="urn:jboss:domain:datasources:1.2">
  <datasources>
    <drivers>
      <driver module="com.mysql.jdbc" name="com.mysql.jdbc">
        <driver-class>com.mysql.jdbc.Driver</driver-class>
         <xa-datasource-class>com.mysql.jdbc.jdbc2.optional.MysqlXADataSource</xa-datasource-class>
      </driver>
    </drivers>
  </datasources>
</subsystem>

Oracle

1
2
3
4
5
6
7
8
9
<subsystem xmlns="urn:jboss:domain:datasources:1.2">
  <datasources>
    <drivers>
      <driver module="oracle.jdbc" name="oracle.jdbc">
        <xa-datasource-class>oracle.jdbc.xa.client.OracleXADataSource</xa-datasource-class>
      </driver>
    </drivers>
  </datasources>
</subsystem>

SQL Server

1
2
3
4
5
6
7
8
9
<subsystem xmlns="urn:jboss:domain:datasources:1.2">
  <datasources>
    <drivers>
      <driver module="com.microsoft.sqlserver.jdbc" name="com.microsoft.sqlserver.jdbc">
        <xa-datasource-class>com.microsoft.sqlserver.jdbc.SQLServerXADataSource</xa-datasource-class>
      </driver>
    </drivers>
  </datasources>
</subsystem>

DB2

1
2
3
4
5
6
7
8
9
<subsystem xmlns="urn:jboss:domain:datasources:1.2">
  <datasources>
    <drivers>
      <driver module="com.ibm.db2.jcc" name="com.ibm.db2.jcc">
         <xa-datasource-class>com.ibm.db2.jcc.DB2Driver</xa-datasource-class>
      </driver>
    </drivers>
  </datasources>
</subsystem>

Replacing the entire urn:jboss:domain:datasources:1.2 subsystem tag will remove the configuration for the example H2 database that JBoss ships by default.

You can combine multiple <driver> elements from the list above within a single <drivers> element in order to configure support for multiple different database drivers.

Configure a Security Domain

To avoid storing data source passwords in plain text, JBoss provides a class that will encode the password. Although an encryption library is used to transform the password, because there is no secret private key, this encryption should be considered merely an encoding.

The encoding utility is available as an option in the Tools menu in the configure script.

Run the Tools -> Encode password for JBoss Security Domain utility in the configure script to encode your password in a way that can be used with JBoss.

Add the security domain in <JBOSS_HOME>/standalone/configuration/standalone.xml under the <security-domains> tag with the correct values:

1
2
3
4
5
6
7
8
9
10
    <security-domain name="ds-name-security-primary" cache-type="default">
      <authentication>
        <login-module code="org.picketbox.datasource.security.SecureIdentityLoginModule" flag="required">
          <module-option name="username" value="your_plaintext_username" />
          <module-option name="password" value="your_encoded_password" />
        </login-module>
      </authentication>
    </security-domain>
        

This snippet is already present in the standalone.xml in the configure script's configuration repository and just needs to be updated with the username and encoded password values there when using the configure script to manage deployments.

Enter the Data Source Property Values

In the <JBOSS_HOME>/standalone/deployments/ directory, create a file called appian-ds.xml using the following example(s) listed for your database(s). The provided examples cannot be used verbatim. You need to enter your specific property values. If you are using the configure script, there is an existing appian-mysql-ds.xml file in the configuration repository that is based on this example and you can make the changes to that file before deploying using the configure script.

  • JBoss associates xml files ending in -ds with your database connection settings.
  • We do not recommend using the individual data source configuration examples (database_name-ds.xml) that ship with JBoss.
  • Make sure to add a <xa-datasource> tag for each database you use. For example, one for your Appian data source and another for your business data source.
  • Including line breaks in your appian-ds.xml attributes may result in misconfigured data sources.
  • We recommend preserving the transaction isolation setting of TRANSACTION_READ_COMMITTED (as shown in the examples) to avoid deadlocks and performance issues that may occur with multiple concurrent reads and writes to the same table if you set the transaction isolation to TRANSACTION_SERIALIZABLE.

Note: If you are upgrading from a previous release of Appian be sure that datasource declarations are ported over correctly. If they are not it could disrupt running processes that make use of query rules or the Query Database smart service. In particular be aware of the following case:

  • If your previous installation of Appian used a JNDI name resembling: java:/jdbc/Datasource then be sure to assign this to the jndi-name attribute of the datasource definition, and to set the use-java-context attribute to true.

MySQL

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?xml version="1.0" encoding="UTF-8"?>
<datasources xmlns="http://www.jboss.org/ironjacamar/schema">
  <xa-datasource
      jndi-name="jdbc/MySqlDataSource"
      pool-name="MySqlDS"
      enabled="true"
      use-java-context="false">
    <xa-datasource-property name="serverName">such_as_server.example.com</xa-datasource-property>
    <xa-datasource-property name="portNumber">3306</xa-datasource-property>
    <xa-datasource-property name="databaseName">such_as_mySQL_for_appian</xa-datasource-property>
    <xa-datasource-property name="useUnicode">true</xa-datasource-property>
    <xa-datasource-property name="characterEncoding">UTF-8</xa-datasource-property>
    <xa-datasource-class>com.mysql.jdbc.jdbc2.optional.MysqlXADataSource</xa-datasource-class>
    <driver>com.mysql.jdbc</driver>
    <security>
      <security-domain>your_security_domain_name</security-domain>
    </security>
    <transaction-isolation>TRANSACTION_READ_COMMITTED</transaction-isolation>
    <xa-pool>
      <min-pool-size>5</min-pool-size>
      <max-pool-size>100</max-pool-size>
    </xa-pool>
    <timeout>
      <blocking-timeout-millis>5000</blocking-timeout-millis>
      <idle-timeout-minutes>5</idle-timeout-minutes>
    </timeout>
  </xa-datasource>
</datasources>

If you are using MySQL with the Query Database Smart Service and your SQL statements utilize column aliases, we recommend that instead of specifying the serverName, portNumber, and databaseName properties as above, you configure the database location via a URL as follows:

1
<xa-datasource-property name="URL">jdbc:mysql://yourserver.example.com:3306/your_db_name?useOldAliasMetadataBehavior=true</xa-datasource-property>

Oracle

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?xml version="1.0" encoding="UTF-8"?>
<datasources
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:noNamespaceSchemaLocation="http://www.jboss.org/ironjacamar/schema/datasources_1_0.xsd">
  <xa-datasource
      jndi-name="jdbc/OracleDataSource"
      pool-name="OracleDS"
      use-java-context="false">
    <xa-datasource-property name="URL">jdbc:oracle:thin:@oracle_server.example.com:1521:ORACLE_FOR_APPIAN</xa-datasource-property>
    <xa-datasource-class>oracle.jdbc.xa.client.OracleXADataSource</xa-datasource-class>
    <driver>oracle.jdbc</driver>
    <security>
      <security-domain>your_security_domain_name</security-domain>
    </security>
    <transaction-isolation>TRANSACTION_READ_COMMITTED</transaction-isolation>
    <xa-pool>
      <min-pool-size>5</min-pool-size>
      <max-pool-size>100</max-pool-size>
    </xa-pool>
    <timeout>
      <blocking-timeout-millis>5000</blocking-timeout-millis>
      <idle-timeout-minutes>5</idle-timeout-minutes>
    </timeout>
  </xa-datasource>
</datasources>

The Oracle hostname, port, and service name are listed in <ORACLE_HOME>/.../server/NETWORK/ADMIN/tnsnames.ora.

Microsoft SQLServer

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?xml version="1.0" encoding="UTF-8"?>
<datasources
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:noNamespaceSchemaLocation="http://www.jboss.org/ironjacamar/schema/datasources_1_0.xsd">
  <xa-datasource
      jndi-name="jdbc/SqlServerDataSource"
      pool-name="SqlServerDS"
      use-java-context="false">
    <xa-datasource-property name="ServerName">such_as_sqlServer.example.com</xa-datasource-property>
    <xa-datasource-property name="PortNumber">1433</xa-datasource-property>
    <xa-datasource-property name="DatabaseName">such_as_MS-SQL_for_appian</xa-datasource-property>
    <driver>com.microsoft.sqlserver.jdbc</driver>
    <xa-datasource-class>com.microsoft.sqlserver.jdbc.SQLServerXADataSource</xa-datasource-class>
    <security>
      <security-domain>your_security_domain_name</security-domain>
    </security>
    <transaction-isolation>TRANSACTION_READ_COMMITTED</transaction-isolation>
    <xa-pool>
      <min-pool-size>5</min-pool-size>
      <max-pool-size>100</max-pool-size>
    </xa-pool>
    <timeout>
      <blocking-timeout-millis>5000</blocking-timeout-millis>
      <idle-timeout-minutes>5</idle-timeout-minutes>
    </timeout>
  </xa-datasource>
</datasources>

IBM DB2

NOTE: The configuration for the DB2 data source supports an ordinary datasource, not the xa-datasource configuration used in other examples. This limitation has no effect on the functionality within Appian.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?xml version="1.0" encoding="UTF-8"?>
<datasources
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:noNamespaceSchemaLocation="http://www.jboss.org/ironjacamar/schema/datasources_1_0.xsd">
  <datasource
      jndi-name="jdbc/Db2DataSource"
      pool-name="DB2DS">
    <connection-url>jdbc:db2://your_db2_domain.example.com:50000/such_as_db2_for_appian</connection-url>
    <driver>com.ibm.db2.jcc</driver>
    <driver-class>com.ibm.db2.jcc.DB2Driver</driver-class>
    <security>
      <security-domain>your_security_domain_name</security-domain>
    </security>
    <connection-property name="jdbcCollection">NULLIDR1</connection-property>
    <transaction-isolation>TRANSACTION_READ_COMMITTED</transaction-isolation>
    <pool>
      <min-pool-size>5</min-pool-size>
      <max-pool-size>100</max-pool-size>
    </pool>
    <timeout>
      <blocking-timeout-millis>5000</blocking-timeout-millis>
      <idle-timeout-minutes>5</idle-timeout-minutes>
    </timeout>
   </datasource>
</datasources>

For the additional configuration that is required to be used in conjunction with the jdbcCollection property given in this example, see below: Optimizing IBM DB2

For WebLogic

To create a data source for WebLogic, see the Configuring WebLogic JDBC Resources help topic in the Oracle documentation portal.

List Data Sources in custom.properties

Regardless of your application server, after creating your data sources, you need to register the Appian and business data sources with Appian.

Appian Data Source

This required data source will be used exclusively for storing data relating to the Appian installation as a whole. The schema is controlled by Appian and does not include any tables designers create when building or importing Appian applications. There is only one Appian data source for each installation of Appian.

To register the Appian data source, list the JNDI name of the Appian data source in custom.properties under the conf.data.APPIAN_DATA_SOURCE property. Any supported RDBMS can be used.

  • For example, conf.data.APPIAN_DATA_SOURCE=java:/jdbc/AppianPrimaryDS

The Appian data source must have a different JNDI name and use a different tablespace or database than the data source(s) used to store business data.

NOTE: Customized interactions with the Appian data source are not supported.

Business Data Sources

Business data source are used to store data relating to applications designers build within Appian. The schema is controlled by designers (or the administrators of pre-existing databases with which Appian integrates), not by Appian itself. At least one business data source is required to use data stores.

There are two ways to register a business data source with Appian: using the Appian Administration Console and listing it in custom.properties.

The Appian Administration Console approach is the recommended way to create or update data source configurations and is the only method supported for Appian Cloud, but data sources that were previously created and registered in custom.properties continue to work. To move a data source configuration from custom.properties to the Administration Console, create a data source in the Administration Console and give it the same name as a data source in custom.properties. If thename field in the Administration console matches a value in conf.data.APPIAN_DATA_SOURCE, the data source configured in the Administration Console will override the one registered in custom.properties.

To register business data sources with Appian using custom.properties, list the JNDI names of business data sources in custom.properties under the conf.data.datasources property. Multiple business data sources can be configured in the same Appian installation by listing multiple JNDI names using a comma separated list. For example: conf.data.datasources=<JNDI-NAME-1>,<JNDI-NAME-2>,<JNDI-NAME-3>

NOTE: DO NOT include the Appian data source in the list of business data sources. This configuration is not supported and will be explicitly prevented in a future release.

Configuring Restrictions on Query Results

Case-Sensitivity in Query Rule Text Comparisons

When creating a query rule that filters text results based on a text comparison (for example, a query rule that only returns results starting with the prefix USA), the case-sensitivity or insensitivity for text comparisons is determined by your RDBMS settings, not a setting configured in Appian.

To ensure your text comparison is case-insensitive, you need to change the default settings specific to your RDBMS.

  • MySQL: The collation determines text comparison and sort order.
    • As mentioned in the Internationalization section below, setting the default collate to utf8mb4_unicode_ci will make it case-insensitive.
  • Oracle: The system variable NLS_COMP determines case-sensitivity.
    • You can set the RDBMS to be case-insensitive system-wide by modifying the system variable to the following: alter system set NLS_COMP = linguistic;
  • SQL Server: The collation determines case-sensitivity and is case-insensitive by default. No changes are needed.
  • DB2: Does not support case-insensitive comparisons.
    • Consider generating an extra column with text converted to uppercase and converting your query argument to uppercase as well.

NOTE: External websites with information specific to your RDBMS can be found here.

Row Return Limits for the Query Database Smart Service

The data that is returned by the Query Database Smart Service only includes a maximum of ten rows of data (1,000 rows for Appian Cloud users).

To configure Appian to read additional rows of data from a database query, complete the following:

  1. Edit (or create) <APPIAN_HOME>/ear/suite.ear/conf/custom.properties.
  2. Adjust the number of rows of data returned by changing the resources.appian.process.application.arv.limit=10 property to arv.limit=<desired-number>.

Query Rule Return Size Limits

The amount of memory it takes to return query results may affect performance, so the following recommended limits have been set:

  • Queries that result in more than 1MB of application server memory usage, by default, are canceled.
  • Queries that take longer than 10 seconds are also, by default, canceled.

These settings can be configured in the custom.properties file.

See also: Query Rule Limits

Node Input and Output Limits

Appian node inputs and node outputs that handle multiple values from a form are restricted to a limit of up to 1250 indices.

Note to Appian Cloud Users:

  • The default query result limit for Appian Cloud users is 1,000 rows.

Internationalization

In order to store an extended range of characters (including languages that use multiple-byte character sets and emojis), follow the instructions below for your database. These configurations must be used whenever multi-byte characters appear in a custom data type definition.

  • MySQL: When creating the databases, set the server's default character set to utf8mb4 and the collation to utf8mb4_unicode_ci, using the following command:
    • CREATE DATABASE example_db_name default character set = "utf8mb4" default collate = "utf8mb4_unicode_ci";
  • Oracle: When creating the database, select Use Unicode AL32UTF8.
  • SQL Server: No additional configuration required.
  • DB2: When creating the databases, set the codeset and territory to UTF-8 and us. Note that the pagesize is also defined during database creation.
    • create database example_db_name using codeset UTF-8 territory us pagesize 32768

The database collation settings determine the sort order of characters, which may be different for different languages. Choose the setting that is most appropriate for the primary language of the site. Although the site can be configured to support users of multiple languages, a single collation must be selected, which affects sorting for all languages. For most languages, the above settings are sufficient.

A site with Swedish as the primary language, however, may choose to set the collation settings in order to have characters that are unique to Swedish sort in the correct order. To do so, complete the following:

  • MySQL: set collate to utf8mb4_swedish_ci instead of utf8mb4_unicode_ci when running the command mentioned above.
  • Oracle: run the following command:
    • create or replace trigger after_logon after logon on schema begin execute immediate 'alter session set nls_language = ''SWEDISH'''; end;
  • SQL Server: run the following command with <DATABASE_NAME> replaced with your database name:
    • create database <DATABASE_NAME> collate Finnish_Swedish_100_CS_AS
  • DB2: run the following command with <DATABASE_NAME> replaced with your database name:
    • CREATE DATABASE <DATABASE_NAME> COLLATE USING UCA500R1_LSV PAGESIZE 32768

Time Zones

The database can be set to any time zone as long as the datetime values persisted from Appian are always returned as the same value when retrieved by Appian. Appian stores and retrieves datetime values as if they are set in the GMT time zone.

If you rely on database functions that are specific to the time zone, such as the NOW or CURTIME functions, it is recommended that you set your database to the GMT time zone to be consistent with Appian's handling of datetime time zones. Alternatively, you must be aware of your databases configured local time zone and shift the value returned by these functions to the equivalent value in GMT.

Note to Appian Cloud Users:

  • The MySQL databases provided with Appian Cloud are set to the GMT time zone.

Optimizing IBM DB2

In order to achieve maximum performance when using DB2 with Appian, the REOPT bind option must be configured to REOPT(ONCE).

See also: IBM DB2 bind option documentation.

Also note that a pagesize of 32768 or greater is required and must be set during the creation of the database.

To apply the REOPT(ONCE) configuration, complete the following for each database used for Appian data source and business data sources:

  1. On the DB2 server, navigate to <DB2_HOME>/bin.
  2. Execute the DB2 command line processor: ./db2
  3. Connect to the database used to store Appian data: connect to <database-name>
    • If multiple databases are used for Appian data source and business data sources, these steps must be followed for each.
  4. Run the bind command: bind ../bnd/db2clipk.bnd collection NULLIDR1
  5. Grant the user execute privileges: GRANT EXECUTE ON PACKAGE NULLIDR1.SYSSH200 TO <database-user>
    • Note: The grant may fail because the user does not have the authority to grant privileges to itself. Should this occur, you can run the above grant with another user that has admin privileges to the database.
  6. To grant another user admin privileges: GRANT DBADM ON DATABASE TO USER <some-other-database-user>

When using a database named appiandata and a user named appianuser, the output looks like this:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
(c) Copyright IBM Corporation 1993,2007
Command Line Processor for DB2 Client 9.7.4

db2 => connect to appiandata

   Database Connection Information

 Database server        = DB2/NT64 9.7.4
 SQL authorization ID   = APPIANUSER
 Local database alias   = APPIANDATA

db2 => bind ../bnd/db2clipk.bnd collection NULLIDR1

LINE    MESSAGES FOR db2clipk.bnd
------  --------------------------------------------------------------------
      SQL0061W  The binder is in progress.
      SQL0091N  Binding was ended with "0" errors and "0" warnings.

db2 => GRANT EXECUTE ON PACKAGE NULLIDR1.SYSSH200 TO appianuser
DB20000I  The SQL command completed successfully.

db2 => quit

Once configured, the individual data sources are able to specify a the REOPT(ONCE) option by using the connection parameter jdbcCollection&#61;NULLIDR1. The example data source configuration for DB2 above includes this option.

Additionally, it is recommended that the RUNSTATS command be used to periodically update the optimizer information about the database. Consult the IBM DB2 RUNSTATS documentation for details on its usage.

The following is an example of using the command with the built-in TP_FEED_ENTRY table in a schema called APPIANDATA:

1
2
3
4
5
    RUNSTATS ON TABLE "APPIANDATA"."TP_FEED_ENTRY"
    ON COLUMNS ( "CREATED_TS" , "AUTHOR"  )
    WITH DISTRIBUTION ON COLUMNS ( "GROUP_UUID" NUM_FREQVALUES 15 NUM_QUANTILES 25  )
    AND SAMPLED DETAILED INDEXES ALL
      ALLOW WRITE ACCESS;

Troubleshooting

The following basic steps can be performed to help troubleshoot connectivity issues.

  • Verify that the database is up and running properly using a database utility or monitoring tool.

  • Check that your database driver is stored in the proper location on your application server.

  • Check your custom.properties configuration settings.
    • Verify that you have the proper Appian data source configuration for your metadata repository.
    • Verify that you have the proper listing for your business data repository.
  • From the application designer, attempt to create a new CDT from a database table. Verify that the data source shows up as an option and that it shows the appropriate schemas and tables.

Database Configuration Error Messages

The Appian web application will fail to deploy during application server start-up if the Appian data source is not configured in custom.properties or is unreachable due to an error. Possible error messages related to this include the following:

Error Code Error Message
APNX-1-4179-002 FATAL: The Appian data source cannot be reached. Access to the Appian data source is required. The Appian application will fail to deploy.
APNX-1-4179-003 FATAL: No value configured for conf.data.APPIAN_DATA_SOURCE in custom.properties. The Appian data source is required. The Appian application will fail to deploy.

The following runtime Appian error messages might also be attributable to an issue with your database configuration.

Error Code Error Message
APNX-1-4164-022 Failed to create data store (rule: [{0}], store: [{1}])
APNX-1-4164-026 JDBC connection error trying to execute query (type: [{0}], query: [{1}])

Oracle Errors

The following error may indicate a problem with your application server's data source configuration.

1
TNS:listener does not currently know of SID given in connect descriptor

MySQL Errors

The following error may indicate that the maximum number of simultaneous client connections to the MySQL database should be increased. Encountering this error is more likely in environments with multiple application servers and heavy load.

1
Too many connections

Based on internal performance testing, Appian recommends setting the following MySQL system variables to at least the values indicated here:

DB2 Errors

When publishing a DB2 data store when running Appian inside WebLogic, if you see an error popup that says "A server error was encountered while processing your request. Please try again." and no further information in the application server log, there might be a problem with your classpath.

The DB2 installer manipulates the java classpath in a way that is not compatible with Appian when run inside WebLogic. If DB2 was installed on the same server as WebLogic, resolve the issue by removing any DB2-related classes from your classpath and restart you application server.

See Also

FEEDBACK