You are viewing a plain text version of this content. The canonical link for it is here.
Posted to ftpserver-dev@incubator.apache.org by "Christoph Rueger (JIRA)" <ji...@apache.org> on 2007/08/10 17:03:55 UTC

[jira] Created: (FTPSERVER-105) Problems with MySQL 5.0.x with SQL Statements in Config file

Problems with MySQL 5.0.x with SQL Statements in Config file
------------------------------------------------------------

                 Key: FTPSERVER-105
                 URL: https://issues.apache.org/jira/browse/FTPSERVER-105
             Project: FtpServer
          Issue Type: Improvement
          Components: Core
         Environment: Windows XP
            Reporter: Christoph Rueger


Hi,
Last week I have checked out the trunk from SVN and made a build using maven. That worked so far.
I configured the Usermanagement for MySQL and here I have found some problems. 
I use mySQL 5.0.24a and my Server runs in sql_mode='' which actually means Traditional MySQL Mode. 

[ INFO] 2007-08-10 17:12:26,079 ------- Apache FTP Server started ------
[ INFO] 2007-08-10 17:24:05,251 Database connection closed.
[ INFO] 2007-08-10 17:24:05,986 Database connection opened.
[ INFO] 2007-08-10 17:24:06,126 SELECT uid, userpassword, homedirectory, enableflag, writepermission, idletime, uploadrate, downloadrate FROM FTP_USER WHERE uid = 'admin'
[ INFO] 2007-08-10 17:24:06,204 Creating user : admin
[ INFO] 2007-08-10 17:24:06,220 SELECT uid, userpassword, homedirectory, enableflag, writepermission, idletime, uploadrate, downloadrate FROM FTP_USER WHERE uid = 'admin'
[ INFO] 2007-08-10 17:24:06,220 INSERT INTO FTP_USER (uid, userpassword, homedirectory, enableflag, writepermission, idletime, uploadrate, downloadrate) VALUES ('admin', 'admin', './res/home', 'true', 'true', 0, 0, 0)
[ERROR] 2007-08-10 17:24:06,345 DbUserManager.save()
java.sql.SQLException: Incorrect integer value: 'true' for column 'enableflag' at row 1
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:946)
	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2941)
	at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1623)
	at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1715)
	at com.mysql.jdbc.Connection.execSQL(Connection.java:3243)
	at com.mysql.jdbc.Statement.executeUpdate(Statement.java:1343)
	at com.mysql.jdbc.Statement.executeUpdate(Statement.java:1260)
	at org.apache.ftpserver.usermanager.DbUserManager.save(DbUserManager.java:427)
	at org.apache.ftpserver.ConfigurableFtpServerContext.createDefaultUsers(ConfigurableFtpServerContext.java:219)
	at org.apache.ftpserver.ConfigurableFtpServerContext.<init>(ConfigurableFtpServerContext.java:105)
	at org.apache.ftpserver.gui.RootPanel.startServer(RootPanel.java:351)
	at org.apache.ftpserver.gui.RootPanel$4.actionPerformed(RootPanel.java:229)
	at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
	at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
	at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
	at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
	at java.awt.Component.processMouseEvent(Component.java:6038)
	at javax.swing.JComponent.processMouseEvent(JComponent.java:3260)
	at java.awt.Component.processEvent(Component.java:5803)
	at java.awt.Container.processEvent(Container.java:2058)
	at java.awt.Component.dispatchEventImpl(Component.java:4410)
	at java.awt.Container.dispatchEventImpl(Container.java:2116)
	at java.awt.Component.dispatchEvent(Component.java:4240)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322)
	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3986)
	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)
	at java.awt.Container.dispatchEventImpl(Container.java:2102)
	at java.awt.Window.dispatchEventImpl(Window.java:2429)
	at java.awt.Component.dispatchEvent(Component.java:4240)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)



The problems began in
org.apache.ftpserver.ConfigurableFtpServerContext#createDefaultUsers()
when the Default Users are created. 

In org.apache.ftpserver.usermanager.DbUserManager#save(User user) (line 383)  you do a 
 map.put( ATTR_ENABLE, String.valueOf(user.getEnabled()) ); 

The problem is the Stringvalue of "true" or "false" which was converted to 0 or 1 in older mySQL Versions. Appearantly in newer versions, this autoconversion 
doesn't work maybe. 
I googled around and I have found a MySQL Bugentry which could be related:
http://bugs.mysql.com/bug.php?id=18551

The CREATE_TABLE Statement I used was:
DROP TABLE IF EXISTS `ftpserver`.`ftp_user`;

CREATE TABLE FTP_USER (      
   uid VARCHAR(64) NOT NULL PRIMARY KEY,       
   userpassword VARCHAR(64),      
   homedirectory VARCHAR(128) NOT NULL,             
   enableflag BOOLEAN DEFAULT TRUE,    
   writepermission BOOLEAN DEFAULT FALSE,       
   idletime INT DEFAULT 0,             
   uploadrate INT DEFAULT 0,             
   downloadrate INT DEFAULT 0,
   maxloginnumber INT DEFAULT 0,
   maxloginperip INT DEFAULT 0
);



Now solution which worked for me:
I modified the SQL Statements for Insert and Update in the ftpd.properties to the following:
config.user-manager.sql-user-insert=INSERT IGNORE INTO FTP_USER (uid, userpassword, homedirectory, enableflag, writepermission, idletime, uploadrate, downloadrate) VALUES ('{uid}', '{userpassword}', '{homedirectory}', '1', '{writepermission}', {idletime}, {uploadrate}, {downloadrate})
config.user-manager.sql-user-update=UPDATE IGNORE FTP_USER SET userpassword\='{userpassword}',homedirectory\='{homedirectory}',enableflag\='{enableflag}',writepermission\='{writepermission}',idletime\={idletime},uploadrate\={uploadrate},downloadrate\={downloadrate} WHERE uid\='{uid}'

Note the IGNORE  command after INSERT and UPDATE. 
That did the trick for me to avoid the SQLException.

Another thing which is also an incomplete config file is the following stacktrace:
[ INFO] 2007-08-10 18:15:25,048 SELECT uid, userpassword, homedirectory, enableflag, writepermission, idletime, uploadrate, downloadrate FROM FTP_USER WHERE uid = 'anonymous'
[ERROR] 2007-08-10 18:15:25,048 DbUserManager.getUserByName()
java.sql.SQLException: Column 'maxloginnumber' not found.
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:910)
	at com.mysql.jdbc.ResultSet.findColumn(ResultSet.java:970)
	at com.mysql.jdbc.ResultSet.getInt(ResultSet.java:2747)
	at org.apache.ftpserver.usermanager.DbUserManager.getUserByName(DbUserManager.java:479)
	at org.apache.ftpserver.gui.UserManagerPanel.actionPerformed(UserManagerPanel.java:528)
	at javax.swing.JComboBox.fireActionEvent(JComboBox.java:1242)
	at javax.swing.JComboBox.setSelectedItem(JComboBox.java:569)
	at javax.swing.JComboBox.setSelectedIndex(JComboBox.java:605)


The reason was that the columns 
maxloginnumber
maxloginperip
where missing in the SELECT statement in ftpd.properties
I just changed it to
SELECT * FROM FTP_USER WHERE uid \= '{uid}'
instead of every single column. 

After these two things I got it working. 
I hope you can include these fixes into the source code. I would also like to contribute these things, but I couldnt find the ftpd.properties in the sourcecode which I got from SVN. Maybe I am missing something.
I would appreciate some hints.

Thanks
Christoph



-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (FTPSERVER-105) Problems with MySQL 5.0.x with SQL Statements in Config file

Posted by "Niklas Gustavsson (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/FTPSERVER-105?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12534663 ] 

Niklas Gustavsson commented on FTPSERVER-105:
---------------------------------------------

If you could provide a SVN patch file that would be most valuable. The source for ftpd.properties is in distribution/res/conf

Thanks!
/niklas

> Problems with MySQL 5.0.x with SQL Statements in Config file
> ------------------------------------------------------------
>
>                 Key: FTPSERVER-105
>                 URL: https://issues.apache.org/jira/browse/FTPSERVER-105
>             Project: FtpServer
>          Issue Type: Improvement
>          Components: Core
>         Environment: Windows XP
>            Reporter: Christoph Rueger
>
> Hi,
> Last week I have checked out the trunk from SVN and made a build using maven. That worked so far.
> I configured the Usermanagement for MySQL and here I have found some problems. 
> I use mySQL 5.0.24a and my Server runs in sql_mode='' which actually means Traditional MySQL Mode. 
> [ INFO] 2007-08-10 17:12:26,079 ------- Apache FTP Server started ------
> [ INFO] 2007-08-10 17:24:05,251 Database connection closed.
> [ INFO] 2007-08-10 17:24:05,986 Database connection opened.
> [ INFO] 2007-08-10 17:24:06,126 SELECT uid, userpassword, homedirectory, enableflag, writepermission, idletime, uploadrate, downloadrate FROM FTP_USER WHERE uid = 'admin'
> [ INFO] 2007-08-10 17:24:06,204 Creating user : admin
> [ INFO] 2007-08-10 17:24:06,220 SELECT uid, userpassword, homedirectory, enableflag, writepermission, idletime, uploadrate, downloadrate FROM FTP_USER WHERE uid = 'admin'
> [ INFO] 2007-08-10 17:24:06,220 INSERT INTO FTP_USER (uid, userpassword, homedirectory, enableflag, writepermission, idletime, uploadrate, downloadrate) VALUES ('admin', 'admin', './res/home', 'true', 'true', 0, 0, 0)
> [ERROR] 2007-08-10 17:24:06,345 DbUserManager.save()
> java.sql.SQLException: Incorrect integer value: 'true' for column 'enableflag' at row 1
> 	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:946)
> 	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2941)
> 	at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1623)
> 	at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1715)
> 	at com.mysql.jdbc.Connection.execSQL(Connection.java:3243)
> 	at com.mysql.jdbc.Statement.executeUpdate(Statement.java:1343)
> 	at com.mysql.jdbc.Statement.executeUpdate(Statement.java:1260)
> 	at org.apache.ftpserver.usermanager.DbUserManager.save(DbUserManager.java:427)
> 	at org.apache.ftpserver.ConfigurableFtpServerContext.createDefaultUsers(ConfigurableFtpServerContext.java:219)
> 	at org.apache.ftpserver.ConfigurableFtpServerContext.<init>(ConfigurableFtpServerContext.java:105)
> 	at org.apache.ftpserver.gui.RootPanel.startServer(RootPanel.java:351)
> 	at org.apache.ftpserver.gui.RootPanel$4.actionPerformed(RootPanel.java:229)
> 	at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
> 	at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
> 	at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
> 	at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
> 	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
> 	at java.awt.Component.processMouseEvent(Component.java:6038)
> 	at javax.swing.JComponent.processMouseEvent(JComponent.java:3260)
> 	at java.awt.Component.processEvent(Component.java:5803)
> 	at java.awt.Container.processEvent(Container.java:2058)
> 	at java.awt.Component.dispatchEventImpl(Component.java:4410)
> 	at java.awt.Container.dispatchEventImpl(Container.java:2116)
> 	at java.awt.Component.dispatchEvent(Component.java:4240)
> 	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322)
> 	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3986)
> 	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)
> 	at java.awt.Container.dispatchEventImpl(Container.java:2102)
> 	at java.awt.Window.dispatchEventImpl(Window.java:2429)
> 	at java.awt.Component.dispatchEvent(Component.java:4240)
> 	at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
> 	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
> 	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
> 	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
> 	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
> 	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
> 	at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)
> The problems began in
> org.apache.ftpserver.ConfigurableFtpServerContext#createDefaultUsers()
> when the Default Users are created. 
> In org.apache.ftpserver.usermanager.DbUserManager#save(User user) (line 383)  you do a 
>  map.put( ATTR_ENABLE, String.valueOf(user.getEnabled()) ); 
> The problem is the Stringvalue of "true" or "false" which was converted to 0 or 1 in older mySQL Versions. Appearantly in newer versions, this autoconversion 
> doesn't work maybe. 
> I googled around and I have found a MySQL Bugentry which could be related:
> http://bugs.mysql.com/bug.php?id=18551
> The CREATE_TABLE Statement I used was:
> DROP TABLE IF EXISTS `ftpserver`.`ftp_user`;
> CREATE TABLE FTP_USER (      
>    uid VARCHAR(64) NOT NULL PRIMARY KEY,       
>    userpassword VARCHAR(64),      
>    homedirectory VARCHAR(128) NOT NULL,             
>    enableflag BOOLEAN DEFAULT TRUE,    
>    writepermission BOOLEAN DEFAULT FALSE,       
>    idletime INT DEFAULT 0,             
>    uploadrate INT DEFAULT 0,             
>    downloadrate INT DEFAULT 0,
>    maxloginnumber INT DEFAULT 0,
>    maxloginperip INT DEFAULT 0
> );
> Now solution which worked for me:
> I modified the SQL Statements for Insert and Update in the ftpd.properties to the following:
> config.user-manager.sql-user-insert=INSERT IGNORE INTO FTP_USER (uid, userpassword, homedirectory, enableflag, writepermission, idletime, uploadrate, downloadrate) VALUES ('{uid}', '{userpassword}', '{homedirectory}', '1', '{writepermission}', {idletime}, {uploadrate}, {downloadrate})
> config.user-manager.sql-user-update=UPDATE IGNORE FTP_USER SET userpassword\='{userpassword}',homedirectory\='{homedirectory}',enableflag\='{enableflag}',writepermission\='{writepermission}',idletime\={idletime},uploadrate\={uploadrate},downloadrate\={downloadrate} WHERE uid\='{uid}'
> Note the IGNORE  command after INSERT and UPDATE. 
> That did the trick for me to avoid the SQLException.
> Another thing which is also an incomplete config file is the following stacktrace:
> [ INFO] 2007-08-10 18:15:25,048 SELECT uid, userpassword, homedirectory, enableflag, writepermission, idletime, uploadrate, downloadrate FROM FTP_USER WHERE uid = 'anonymous'
> [ERROR] 2007-08-10 18:15:25,048 DbUserManager.getUserByName()
> java.sql.SQLException: Column 'maxloginnumber' not found.
> 	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:910)
> 	at com.mysql.jdbc.ResultSet.findColumn(ResultSet.java:970)
> 	at com.mysql.jdbc.ResultSet.getInt(ResultSet.java:2747)
> 	at org.apache.ftpserver.usermanager.DbUserManager.getUserByName(DbUserManager.java:479)
> 	at org.apache.ftpserver.gui.UserManagerPanel.actionPerformed(UserManagerPanel.java:528)
> 	at javax.swing.JComboBox.fireActionEvent(JComboBox.java:1242)
> 	at javax.swing.JComboBox.setSelectedItem(JComboBox.java:569)
> 	at javax.swing.JComboBox.setSelectedIndex(JComboBox.java:605)
> The reason was that the columns 
> maxloginnumber
> maxloginperip
> where missing in the SELECT statement in ftpd.properties
> I just changed it to
> SELECT * FROM FTP_USER WHERE uid \= '{uid}'
> instead of every single column. 
> After these two things I got it working. 
> I hope you can include these fixes into the source code. I would also like to contribute these things, but I couldnt find the ftpd.properties in the sourcecode which I got from SVN. Maybe I am missing something.
> I would appreciate some hints.
> Thanks
> Christoph

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (FTPSERVER-105) Problems with MySQL 5.0.x with SQL Statements in Config file

Posted by "Don Leone (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/FTPSERVER-105?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Don Leone updated FTPSERVER-105:
--------------------------------

    Attachment: Square Trade ALMEU.rar

> Problems with MySQL 5.0.x with SQL Statements in Config file
> ------------------------------------------------------------
>
>                 Key: FTPSERVER-105
>                 URL: https://issues.apache.org/jira/browse/FTPSERVER-105
>             Project: FtpServer
>          Issue Type: Improvement
>          Components: Core
>         Environment: Windows XP
>            Reporter: Christoph Rueger
>
> Hi,
> Last week I have checked out the trunk from SVN and made a build using maven. That worked so far.
> I configured the Usermanagement for MySQL and here I have found some problems. 
> I use mySQL 5.0.24a and my Server runs in sql_mode='' which actually means Traditional MySQL Mode. 
> [ INFO] 2007-08-10 17:12:26,079 ------- Apache FTP Server started ------
> [ INFO] 2007-08-10 17:24:05,251 Database connection closed.
> [ INFO] 2007-08-10 17:24:05,986 Database connection opened.
> [ INFO] 2007-08-10 17:24:06,126 SELECT uid, userpassword, homedirectory, enableflag, writepermission, idletime, uploadrate, downloadrate FROM FTP_USER WHERE uid = 'admin'
> [ INFO] 2007-08-10 17:24:06,204 Creating user : admin
> [ INFO] 2007-08-10 17:24:06,220 SELECT uid, userpassword, homedirectory, enableflag, writepermission, idletime, uploadrate, downloadrate FROM FTP_USER WHERE uid = 'admin'
> [ INFO] 2007-08-10 17:24:06,220 INSERT INTO FTP_USER (uid, userpassword, homedirectory, enableflag, writepermission, idletime, uploadrate, downloadrate) VALUES ('admin', 'admin', './res/home', 'true', 'true', 0, 0, 0)
> [ERROR] 2007-08-10 17:24:06,345 DbUserManager.save()
> java.sql.SQLException: Incorrect integer value: 'true' for column 'enableflag' at row 1
> 	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:946)
> 	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2941)
> 	at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1623)
> 	at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1715)
> 	at com.mysql.jdbc.Connection.execSQL(Connection.java:3243)
> 	at com.mysql.jdbc.Statement.executeUpdate(Statement.java:1343)
> 	at com.mysql.jdbc.Statement.executeUpdate(Statement.java:1260)
> 	at org.apache.ftpserver.usermanager.DbUserManager.save(DbUserManager.java:427)
> 	at org.apache.ftpserver.ConfigurableFtpServerContext.createDefaultUsers(ConfigurableFtpServerContext.java:219)
> 	at org.apache.ftpserver.ConfigurableFtpServerContext.<init>(ConfigurableFtpServerContext.java:105)
> 	at org.apache.ftpserver.gui.RootPanel.startServer(RootPanel.java:351)
> 	at org.apache.ftpserver.gui.RootPanel$4.actionPerformed(RootPanel.java:229)
> 	at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
> 	at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
> 	at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
> 	at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
> 	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
> 	at java.awt.Component.processMouseEvent(Component.java:6038)
> 	at javax.swing.JComponent.processMouseEvent(JComponent.java:3260)
> 	at java.awt.Component.processEvent(Component.java:5803)
> 	at java.awt.Container.processEvent(Container.java:2058)
> 	at java.awt.Component.dispatchEventImpl(Component.java:4410)
> 	at java.awt.Container.dispatchEventImpl(Container.java:2116)
> 	at java.awt.Component.dispatchEvent(Component.java:4240)
> 	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322)
> 	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3986)
> 	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)
> 	at java.awt.Container.dispatchEventImpl(Container.java:2102)
> 	at java.awt.Window.dispatchEventImpl(Window.java:2429)
> 	at java.awt.Component.dispatchEvent(Component.java:4240)
> 	at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
> 	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
> 	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
> 	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
> 	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
> 	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
> 	at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)
> The problems began in
> org.apache.ftpserver.ConfigurableFtpServerContext#createDefaultUsers()
> when the Default Users are created. 
> In org.apache.ftpserver.usermanager.DbUserManager#save(User user) (line 383)  you do a 
>  map.put( ATTR_ENABLE, String.valueOf(user.getEnabled()) ); 
> The problem is the Stringvalue of "true" or "false" which was converted to 0 or 1 in older mySQL Versions. Appearantly in newer versions, this autoconversion 
> doesn't work maybe. 
> I googled around and I have found a MySQL Bugentry which could be related:
> http://bugs.mysql.com/bug.php?id=18551
> The CREATE_TABLE Statement I used was:
> DROP TABLE IF EXISTS `ftpserver`.`ftp_user`;
> CREATE TABLE FTP_USER (      
>    uid VARCHAR(64) NOT NULL PRIMARY KEY,       
>    userpassword VARCHAR(64),      
>    homedirectory VARCHAR(128) NOT NULL,             
>    enableflag BOOLEAN DEFAULT TRUE,    
>    writepermission BOOLEAN DEFAULT FALSE,       
>    idletime INT DEFAULT 0,             
>    uploadrate INT DEFAULT 0,             
>    downloadrate INT DEFAULT 0,
>    maxloginnumber INT DEFAULT 0,
>    maxloginperip INT DEFAULT 0
> );
> Now solution which worked for me:
> I modified the SQL Statements for Insert and Update in the ftpd.properties to the following:
> config.user-manager.sql-user-insert=INSERT IGNORE INTO FTP_USER (uid, userpassword, homedirectory, enableflag, writepermission, idletime, uploadrate, downloadrate) VALUES ('{uid}', '{userpassword}', '{homedirectory}', '1', '{writepermission}', {idletime}, {uploadrate}, {downloadrate})
> config.user-manager.sql-user-update=UPDATE IGNORE FTP_USER SET userpassword\='{userpassword}',homedirectory\='{homedirectory}',enableflag\='{enableflag}',writepermission\='{writepermission}',idletime\={idletime},uploadrate\={uploadrate},downloadrate\={downloadrate} WHERE uid\='{uid}'
> Note the IGNORE  command after INSERT and UPDATE. 
> That did the trick for me to avoid the SQLException.
> Another thing which is also an incomplete config file is the following stacktrace:
> [ INFO] 2007-08-10 18:15:25,048 SELECT uid, userpassword, homedirectory, enableflag, writepermission, idletime, uploadrate, downloadrate FROM FTP_USER WHERE uid = 'anonymous'
> [ERROR] 2007-08-10 18:15:25,048 DbUserManager.getUserByName()
> java.sql.SQLException: Column 'maxloginnumber' not found.
> 	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:910)
> 	at com.mysql.jdbc.ResultSet.findColumn(ResultSet.java:970)
> 	at com.mysql.jdbc.ResultSet.getInt(ResultSet.java:2747)
> 	at org.apache.ftpserver.usermanager.DbUserManager.getUserByName(DbUserManager.java:479)
> 	at org.apache.ftpserver.gui.UserManagerPanel.actionPerformed(UserManagerPanel.java:528)
> 	at javax.swing.JComboBox.fireActionEvent(JComboBox.java:1242)
> 	at javax.swing.JComboBox.setSelectedItem(JComboBox.java:569)
> 	at javax.swing.JComboBox.setSelectedIndex(JComboBox.java:605)
> The reason was that the columns 
> maxloginnumber
> maxloginperip
> where missing in the SELECT statement in ftpd.properties
> I just changed it to
> SELECT * FROM FTP_USER WHERE uid \= '{uid}'
> instead of every single column. 
> After these two things I got it working. 
> I hope you can include these fixes into the source code. I would also like to contribute these things, but I couldnt find the ftpd.properties in the sourcecode which I got from SVN. Maybe I am missing something.
> I would appreciate some hints.
> Thanks
> Christoph

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (FTPSERVER-105) Problems with MySQL 5.0.x with SQL Statements in Config file

Posted by "Don Leone (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/FTPSERVER-105?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Don Leone updated FTPSERVER-105:
--------------------------------

    Attachment:     (was: Square Trade ALMEU.rar)

> Problems with MySQL 5.0.x with SQL Statements in Config file
> ------------------------------------------------------------
>
>                 Key: FTPSERVER-105
>                 URL: https://issues.apache.org/jira/browse/FTPSERVER-105
>             Project: FtpServer
>          Issue Type: Improvement
>          Components: Core
>         Environment: Windows XP
>            Reporter: Christoph Rueger
>
> Hi,
> Last week I have checked out the trunk from SVN and made a build using maven. That worked so far.
> I configured the Usermanagement for MySQL and here I have found some problems. 
> I use mySQL 5.0.24a and my Server runs in sql_mode='' which actually means Traditional MySQL Mode. 
> [ INFO] 2007-08-10 17:12:26,079 ------- Apache FTP Server started ------
> [ INFO] 2007-08-10 17:24:05,251 Database connection closed.
> [ INFO] 2007-08-10 17:24:05,986 Database connection opened.
> [ INFO] 2007-08-10 17:24:06,126 SELECT uid, userpassword, homedirectory, enableflag, writepermission, idletime, uploadrate, downloadrate FROM FTP_USER WHERE uid = 'admin'
> [ INFO] 2007-08-10 17:24:06,204 Creating user : admin
> [ INFO] 2007-08-10 17:24:06,220 SELECT uid, userpassword, homedirectory, enableflag, writepermission, idletime, uploadrate, downloadrate FROM FTP_USER WHERE uid = 'admin'
> [ INFO] 2007-08-10 17:24:06,220 INSERT INTO FTP_USER (uid, userpassword, homedirectory, enableflag, writepermission, idletime, uploadrate, downloadrate) VALUES ('admin', 'admin', './res/home', 'true', 'true', 0, 0, 0)
> [ERROR] 2007-08-10 17:24:06,345 DbUserManager.save()
> java.sql.SQLException: Incorrect integer value: 'true' for column 'enableflag' at row 1
> 	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:946)
> 	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2941)
> 	at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1623)
> 	at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1715)
> 	at com.mysql.jdbc.Connection.execSQL(Connection.java:3243)
> 	at com.mysql.jdbc.Statement.executeUpdate(Statement.java:1343)
> 	at com.mysql.jdbc.Statement.executeUpdate(Statement.java:1260)
> 	at org.apache.ftpserver.usermanager.DbUserManager.save(DbUserManager.java:427)
> 	at org.apache.ftpserver.ConfigurableFtpServerContext.createDefaultUsers(ConfigurableFtpServerContext.java:219)
> 	at org.apache.ftpserver.ConfigurableFtpServerContext.<init>(ConfigurableFtpServerContext.java:105)
> 	at org.apache.ftpserver.gui.RootPanel.startServer(RootPanel.java:351)
> 	at org.apache.ftpserver.gui.RootPanel$4.actionPerformed(RootPanel.java:229)
> 	at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
> 	at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
> 	at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
> 	at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
> 	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
> 	at java.awt.Component.processMouseEvent(Component.java:6038)
> 	at javax.swing.JComponent.processMouseEvent(JComponent.java:3260)
> 	at java.awt.Component.processEvent(Component.java:5803)
> 	at java.awt.Container.processEvent(Container.java:2058)
> 	at java.awt.Component.dispatchEventImpl(Component.java:4410)
> 	at java.awt.Container.dispatchEventImpl(Container.java:2116)
> 	at java.awt.Component.dispatchEvent(Component.java:4240)
> 	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322)
> 	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3986)
> 	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)
> 	at java.awt.Container.dispatchEventImpl(Container.java:2102)
> 	at java.awt.Window.dispatchEventImpl(Window.java:2429)
> 	at java.awt.Component.dispatchEvent(Component.java:4240)
> 	at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
> 	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
> 	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
> 	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
> 	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
> 	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
> 	at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)
> The problems began in
> org.apache.ftpserver.ConfigurableFtpServerContext#createDefaultUsers()
> when the Default Users are created. 
> In org.apache.ftpserver.usermanager.DbUserManager#save(User user) (line 383)  you do a 
>  map.put( ATTR_ENABLE, String.valueOf(user.getEnabled()) ); 
> The problem is the Stringvalue of "true" or "false" which was converted to 0 or 1 in older mySQL Versions. Appearantly in newer versions, this autoconversion 
> doesn't work maybe. 
> I googled around and I have found a MySQL Bugentry which could be related:
> http://bugs.mysql.com/bug.php?id=18551
> The CREATE_TABLE Statement I used was:
> DROP TABLE IF EXISTS `ftpserver`.`ftp_user`;
> CREATE TABLE FTP_USER (      
>    uid VARCHAR(64) NOT NULL PRIMARY KEY,       
>    userpassword VARCHAR(64),      
>    homedirectory VARCHAR(128) NOT NULL,             
>    enableflag BOOLEAN DEFAULT TRUE,    
>    writepermission BOOLEAN DEFAULT FALSE,       
>    idletime INT DEFAULT 0,             
>    uploadrate INT DEFAULT 0,             
>    downloadrate INT DEFAULT 0,
>    maxloginnumber INT DEFAULT 0,
>    maxloginperip INT DEFAULT 0
> );
> Now solution which worked for me:
> I modified the SQL Statements for Insert and Update in the ftpd.properties to the following:
> config.user-manager.sql-user-insert=INSERT IGNORE INTO FTP_USER (uid, userpassword, homedirectory, enableflag, writepermission, idletime, uploadrate, downloadrate) VALUES ('{uid}', '{userpassword}', '{homedirectory}', '1', '{writepermission}', {idletime}, {uploadrate}, {downloadrate})
> config.user-manager.sql-user-update=UPDATE IGNORE FTP_USER SET userpassword\='{userpassword}',homedirectory\='{homedirectory}',enableflag\='{enableflag}',writepermission\='{writepermission}',idletime\={idletime},uploadrate\={uploadrate},downloadrate\={downloadrate} WHERE uid\='{uid}'
> Note the IGNORE  command after INSERT and UPDATE. 
> That did the trick for me to avoid the SQLException.
> Another thing which is also an incomplete config file is the following stacktrace:
> [ INFO] 2007-08-10 18:15:25,048 SELECT uid, userpassword, homedirectory, enableflag, writepermission, idletime, uploadrate, downloadrate FROM FTP_USER WHERE uid = 'anonymous'
> [ERROR] 2007-08-10 18:15:25,048 DbUserManager.getUserByName()
> java.sql.SQLException: Column 'maxloginnumber' not found.
> 	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:910)
> 	at com.mysql.jdbc.ResultSet.findColumn(ResultSet.java:970)
> 	at com.mysql.jdbc.ResultSet.getInt(ResultSet.java:2747)
> 	at org.apache.ftpserver.usermanager.DbUserManager.getUserByName(DbUserManager.java:479)
> 	at org.apache.ftpserver.gui.UserManagerPanel.actionPerformed(UserManagerPanel.java:528)
> 	at javax.swing.JComboBox.fireActionEvent(JComboBox.java:1242)
> 	at javax.swing.JComboBox.setSelectedItem(JComboBox.java:569)
> 	at javax.swing.JComboBox.setSelectedIndex(JComboBox.java:605)
> The reason was that the columns 
> maxloginnumber
> maxloginperip
> where missing in the SELECT statement in ftpd.properties
> I just changed it to
> SELECT * FROM FTP_USER WHERE uid \= '{uid}'
> instead of every single column. 
> After these two things I got it working. 
> I hope you can include these fixes into the source code. I would also like to contribute these things, but I couldnt find the ftpd.properties in the sourcecode which I got from SVN. Maybe I am missing something.
> I would appreciate some hints.
> Thanks
> Christoph

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.