Thanks for the heads up on the fix to the specified key length issue. I ran into it and recompiled using the 767 byte length, but then my Slackware build was to test the jar files for connections to a SQLServer instance, which has a max key length of 900, so going with 767 worked okay for me. Glad you got it to work. I figured it was likely a misconfiguration of MySQL when you said the URLs matched except for database name.
On Sat, Jan 5, 2019 at 10:24 PM Marc Chamberlin <m...@marcchamberlin.com> wrote: > Thanks everyone who helped me with getting James and MySQL/MariaDB to > get along with each other. Upgrading MariaDB from version 10.0 (supplied > with the OpenSUSE distro) to version 10.3 solved the remaining problems > I was experiencing. Appears there was a bug in setting table sizes that > they managed to solve. I will close this thread and start a new one > with my next question. > > Marc.. > > On 01/04/2019 03:36 PM, Marc Chamberlin wrote: > > Hi Garry - Took quite a bit of sleuthing but I think I have made > > progress, at least solved one thing only to encounter another... Isn't > > that the way programming goes? LOL Anywise it appears I made a > > mistake in granting privileges in MariaDB, I had executed the following - > > > > MariaDB [mysql]> grant all privileges on mail to 'james'@'localhost'; > > whereas it should have been - > > > > MariaDB [mysql]> grant all privileges on mail.* to 'james'@'localhost'; > > > > To insure user james had remote access from my internal network I also > > issued this command - > > > > MariaDB [mail]> grant all privileges on mail.* to > > 'james'@'192.168.10.%' identified by 'aPassword'; > > > > Sometime ya just got to love non-intuitive command syntax (and > > non-intuitive error messages)! So that got me past the previous set of > > exceptions I was experiencing only to land me in this muddle - > > > > WARN 14:28:38,933 | > > org.apache.james.container.spring.context.JamesServerApplicationContext > > | Exception encountered during context initial > > ization - cancelling refresh attempt: > > org.springframework.beans.factory.UnsatisfiedDependencyException: > > Error creating bean with name 'auth > > enticator' defined in class path resource > > [META-INF/org/apache/james/spring-mailbox-authenticator.xml]: > > Unsatisfied dependency expressed th > > rough constructor argument with index 0 of type > > [org.apache.james.user.api.UsersRepository]: : Error creating bean > > with name 'usersreposito > > ry': Invocation of init method failed; nested exception is > > <openjpa-3.0.0-r422266:1833209 nonfatal general error> > > org.apache.openjpa.persis > > tence.PersistenceException: (conn=10) Specified key was too long; max > > key length is 767 bytes {stmnt 515268797 CREATE TABLE JAMES_MAIL_REPO > > S (MAIL_REPO_NAME VARCHAR(1024) NOT NULL, PRIMARY KEY > > (MAIL_REPO_NAME)) ENGINE = innodb} [code=1071, state=42000]; nested > > exception is org. > > springframework.beans.factory.BeanCreationException: Error creating > > bean with name 'usersrepository': Invocation of init method failed; nes > > ted exception is <openjpa-3.0.0-r422266:1833209 nonfatal general > > error> org.apache.openjpa.persistence.PersistenceException: (conn=10) > > Spec > > ified key was too long; max key length is 767 bytes {stmnt 515268797 > > CREATE TABLE JAMES_MAIL_REPOS (MAIL_REPO_NAME VARCHAR(1024) NOT NULL, > > PRIMARY KEY (MAIL_REPO_NAME)) ENGINE = innodb} [code=1071, state=42000] > > > > Uhhh "Specified key was too long; max key length is 767 bytes"??? > > What in the world is this talking about? Google makes it sound like > > another MySQL issue? > > > > I am not groking what you are saying about the JPA classes not > > working, or what symptoms I will see. Sounds ominous... Have I > > reached the point where I will have to create the tables manually? > > > > Thanks again for all your help... Marc... > > > > > > On 1/4/19 6:29 AM, Garry Hurley wrote: > >> A few things I forgot to mention, make sure you have granted your user > >> access to log in remotely, and that you have created whatever > >> database you > >> want to connect to (just do the create database '<your db name > >> here>'; and > >> it will work). Also, once you get past that point, you will likely find > >> that the JPA classes don't work. That is fixed in the current code > >> stream.I doubt it has been backcported to 3.2.0, so be advised. If you > >> need scripts for creating the tables manually, I have them. exported > >> from > >> SQL Server, but the DDL scripts should not be too different, just > >> reach out > >> to me and I will pop them into an email. > >> > >> > >> On Fri, Jan 4, 2019 at 9:16 AM Garry Hurley <garry.hurley...@gmail.com> > >> wrote: > >> > >>> The vendor class on the driver is supposed to match, but also be > >>> certain you are using Mariadb and not MySQL database and MariaDB > >>> client in your Linux distro. My config, which does work in the current > >>> branch (3.3.0 SNAPSHOT), is as follows. It goes without saying that > >>> your mileage my vary, and that I am using Slackware Linux, so your > >>> mileage may vary. > >>> > >>> ... > >>> # Use derby as default > >>> database.driverClassName=org.mariadb.jdbc.Driver > >>> database.url=jdbc:mariadb://localhost:3306/maildb > >>> database.username=james > >>> database.password=<your password> > >>> > >>> # Supported adapters are: > >>> # DB2, DERBY, H2, HSQL, INFORMIX, MYSQL, ORACLE, POSTGRESQL, > >>> SQL_SERVER, > >>> SYBASE > >>> vendorAdapter.database=MYSQL > >>> > >>> ... > >>> > >>> > >>> Make sure, however, that your database is configured to allow network > >>> connections. Change your rc.mysqld (or comparable one if your Linux > >>> distro is inferior to Slackware ;) ) script to read as follows: > >>> ... > >>> # To allow outside connections to the database comment out the next > >>> line. > >>> # If you don't need incoming network connections, then leave the line > >>> # uncommented to improve system security. > >>> #SKIP="--skip-networking" > >>> ... > >>> > >>> > >>>> On Jan 4, 2019, at 6:47 AM, Saibabu Vallurupalli < > >>> saibabu.vallurupa...@gmail.com> wrote: > >>>> your configurations are incorrect is what the error shows and I see > >>>> you have got: > >>>> > >>>> vendorAdapter.database=MYSQL > >>>> > >>>> This should be : > >>>> vendorAdapter.database=MARIADB > >>>> > >>>> Try changing this. > >>>> > >>>> Thanks, > >>>> Sai > >>>> > >>>>> On Fri, Jan 4, 2019 at 2:39 AM Marc Chamberlin > >>>>> <m...@marcchamberlin.com> > >>> wrote: > >>>>> (Thanks Benoit, Saibabu, and Simon for taking the time/trouble to > >>>>> answer > >>>>> my previous question on MySQL. It helped a lot!) > >>>>> > >>>>> I have managed to get a little further setting up James 3.2.0 Spring > >>>>> with MySQL/MariaDB but have ran into a problem which Google is not > >>>>> being > >>>>> helpful. > >>>>> > >>>>> I appear to be having troubles with getting a connection going > >>>>> between > >>>>> James and the MariaDB server. I will provide a description of what I > >>>>> have done and then I will show the exception message I am getting > >>>>> which > >>>>> is stopping James from starting up... > >>>>> > >>>>> First of all I downloaded the MariaDB Connector/J .jar file from > >>>>> https://downloads.mariadb.org/connector-java/ and installed it in > the > >>>>> conf/lib directory within the James installation. > >>>>> > >>>>> I then set up a database and user in MariaDB as follows - > >>>>> > >>>>>> mysql --user=root -p > >>>>> MariaDB [mysql]> create database mail; > >>>>> MariaDB [mysql]> create user 'james'@'localhost' identified by > >>> 'apassword'; > >>>>> MariaDB [mysql]> grant all privileges on mail to 'james'@ > 'localhost'; > >>>>> > >>>>> I also created a system user for james and assigned it the same > >>> password. > >>>>> Next I edited the james-database.properties file as follows - > >>>>> > >>>>> database.driverClassName=org.mariadb.jdbc.Driver > >>>>> database.url=jdbc:mariadb://127.0.0.1:3306/mail > >>>>> database.username=james > >>>>> database.password=apassword > >>>>> vendorAdapter.database=MYSQL > >>>>> openjpa.streaming=false > >>>>> datasource.testOnBorrow=true > >>>>> datasource.validationQueryTimeoutSec=2 > >>>>> datasource.validationQuery=select 1 > >>>>> > >>>>> Telnetting to localhost port 3306 does show that the mariadb > >>>>> server is > >>>>> responding but hard to say exactly what is being communicated > >>>>> because a > >>>>> lot of the text has non-printable characters. I assume it is working > >>> OK... > >>>>> Upon starting up James I am getting exceptions with a huge amount of > >>>>> stack walkback messages, but I will try to capture just what > >>>>> appears to > >>>>> be relevant - > >>>>> > >>>>> INFO 22:03:05,852 | > >>>>> org.apache.james.domainlist.lib.AbstractDomainList > >>>>> | Set autodetectIP to: true > >>>>> WARN 22:03:06,000 | > >>>>> > org.apache.james.container.spring.context.JamesServerApplicationContext > >>>>> > >>>>> | Exception encountered during context initial > >>>>> ization - cancelling refresh attempt: > >>>>> org.springframework.beans.factory.UnsatisfiedDependencyException: > >>>>> Error > >>>>> creating bean with name 'auth > >>>>> enticator' defined in class path resource > >>>>> [META-INF/org/apache/james/spring-mailbox-authenticator.xml]: > >>>>> Unsatisfied dependency expressed th > >>>>> rough constructor argument with index 0 of type > >>>>> [org.apache.james.user.api.UsersRepository]: : Error creating bean > >>>>> with > >>>>> name 'usersreposito > >>>>> ry': Invocation of init method failed; nested exception is > >>>>> <openjpa-3.0.0-r422266:1833209 nonfatal general error> > >>>>> org.apache.openjpa.persis > >>>>> tence.PersistenceException: There were errors initializing your > >>>>> configuration: <openjpa-3.0.0-r422266:1833209 fatal user error> > >>> org.apache. > >>>>> openjpa.util.UserException: A connection could not be obtained for > >>>>> driver class "null" and URL "null". You may have specified an > >>>>> invalid U > >>>>> RL. > >>>>> at > >>>>> > >>> > org.apache.openjpa.jdbc.schema.DataSourceFactory.newConnectException(DataSourceFactory.java:272) > >>> > >>>>> at > >>>>> > >>> > org.apache.openjpa.jdbc.schema.DataSourceFactory.installDBDictionary(DataSourceFactory.java:258) > >>> > >>>>> at > >>>>> > >>> > org.apache.openjpa.jdbc.conf.JDBCConfigurationImpl.getConnectionFactory(JDBCConfigurationImpl.java:735) > >>> > >>>>> ... (Lots more trace back messages followed by -) > >>>>> Caused by: org.apache.commons.dbcp.SQLNestedException: Cannot create > >>>>> PoolableConnectionFactory (Access denied for user > >>>>> 'james@localhost'@'l > >>>>> ocalhost' (using password: YES)) > >>>>> at > >>>>> > >>> > org.apache.commons.dbcp.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:1549) > >>> > >>>>> at > >>>>> > >>> > org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1388) > >>> > >>>>> at > >>>>> > >>> > org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1044) > >>> > >>>>> and these exceptions/stack trace walkbacks repeat several time in the > >>>>> log file. Kinda hard for this poor soul to grok and I sure would > >>>>> appreciate it if wiser eyes could provide me with some > >>>>> ideas/pointers. I > >>>>> would be willing to send the entire log file if that would help, but > >>>>> warning it is a LOT! I am missing something simple probably.... > >>>>> Thanks > >>>>> again in advance for helping me over this bump... > >>>>> > >>>>> Marc... > >>>>> > >>>>> > >>>>> > >>>>> Linux Counter > >>>> --------------------------------------------------------------------- > >>>> To unsubscribe, e-mail: server-user-unsubscr...@james.apache.org > >>>> For additional commands, e-mail: server-user-h...@james.apache.org > >>>> > > > > > > --------------------------------------------------------------------- > > To unsubscribe, e-mail: server-user-unsubscr...@james.apache.org > > For additional commands, e-mail: server-user-h...@james.apache.org > > > > -- > Linux Counter >