Mysql запускает код, но создается только первая таблица

#java #jdbc

#java #jdbc

Вопрос:

Я разрабатываю приложение и использую JavaMysql для подключения к базе данных. Как указано в названии, 2-я таблица (автозамены) не создается.

Я попытался запустить оба SQL connects в одном операторе, но также потерпел неудачу

Вот как я подключаюсь к БД, используя java.sql.*;

 connection = DriverManager.getConnection("jdbc:mysql://"   this.host   ":"   this.port   "/"   this.database, this.user, this.password);
  

Основной код

 public MySql initialize() {

    connect();

    try {
        connection.prepareStatement("SELECT 1 FROM guilds LIMIT 1").executeQuery();
    } catch (SQLException e) {
        try {
            connection.prepareStatement(
                    "CREATE TABLE IF NOT EXISTS `guilds` (n"  
                            "  `id` text,n"  
                            "  `prefix` text,n"  
                            "  `joinmsg` text,n"  
                            "  `leavemsg` text,n"  
                            ") ENGINE=InnoDB DEFAULT CHARSET=utf8;"

            ).execute();

            connection.prepareStatement(
                    "CREATE TABLE IF NOT EXISTS `autochans` (n"  
                            "  `chan` text,n"  
                            "  `guild` text,n"  
                            ") ENGINE=InnoDB DEFAULT CHARSET=utf8;"
            ).execute();

            System.out.println("MySql structure created...");
        } catch (SQLException e1) {
            e1.printStackTrace();
        }
    }

    return this;
}
  

Комментарии:

1. Удалите точки с запятой в конце инструкции. Они нужны только при использовании командной строки mysql.

2. Не имеете ли вы в виду под концом CHARSET=utf8; если да, то все та же проблема.

Ответ №1:

Вам нужно убрать запятую в последнем столбце.

Попробуйте с

         connection.prepareStatement(
                "CREATE TABLE IF NOT EXISTS `guilds` (n"  
                        "  `id` text,n"  
                        "  `prefix` text,n"  
                        "  `joinmsg` text,n"  
                        "  `leavemsg` textn"  
                        ") ENGINE=InnoDB DEFAULT CHARSET=utf8"

        ).execute();

        connection.prepareStatement(
                "CREATE TABLE IF NOT EXISTS `autochans` (n"  
                        "  `chan` text,n"  
                        "  `guild` textn"  
                        ") ENGINE=InnoDB DEFAULT CHARSET=utf8"
        ).execute();
  

Комментарии:

1. Вы всегда можете проверить свои sql-запросы здесь eversql.com/sql-syntax-check-validator