SQL State : 42000
Error Code : 1071
Message : Specified key was too long; max key length is 767 bytes
Location : .\migrate\mysql\V22add_user_session_token_index.sql(D:\webserver\im-server-release038.\migrate\mysql\V22add_user_session_token_index.sql)
Line : 1
Statement : alter table t_user_session ADD INDEX session_token_index
( _token ) at org.flywaydb.core.internal.command.DbMigrate.doMigrateGroup(DbMigrate.java:370)
at org.flywaydb.core.internal.command.DbMigrate.access$200(DbMigrate.java:54)
at org.flywaydb.core.internal.command.DbMigrate$3.call(DbMigrate.java:284)
at org.flywaydb.core.internal.jdbc.TransactionTemplate.execute(TransactionTemplate.java:74)
at org.flywaydb.core.internal.command.DbMigrate.applyMigrations(DbMigrate.java:281)
at org.flywaydb.core.internal.command.DbMigrate.migrateGroup(DbMigrate.java:246)
at org.flywaydb.core.internal.command.DbMigrate.access$100(DbMigrate.java:54)
at org.flywaydb.core.internal.command.DbMigrate$2.call(DbMigrate.java:164)
at org.flywaydb.core.internal.command.DbMigrate$2.call(DbMigrate.java:161)
at org.flywaydb.core.internal.database.mysql.MySQLNamedLockTemplate.execute(MySQLNamedLockTemplate.java:60)
at org.flywaydb.core.internal.database.mysql.MySQLConnection.lock(MySQLConnection.java:147)
at org.flywaydb.core.internal.schemahistory.JdbcTableSchemaHistory.lock(JdbcTableSchemaHistory.java:155)
at org.flywaydb.core.internal.command.DbMigrate.migrateAll(DbMigrate.java:161)
at org.flywaydb.core.internal.command.DbMigrate.migrate(DbMigrate.java:139)
at org.flywaydb.core.Flyway$1.execute(Flyway.java:1395)
at org.flywaydb.core.Flyway$1.execute(Flyway.java:1356)
at org.flywaydb.core.Flyway.execute(Flyway.java:1711)
at org.flywaydb.core.Flyway.migrate(Flyway.java:1356)
at win.liyufan.im.DBUtil.init(DBUtil.java:103)
at io.moquette.server.Server.startServer(Server.java:223)
at io.moquette.server.Server.startServer(Server.java:215)
at io.moquette.server.Server.startServer(Server.java:199)
at io.moquette.server.Server.start(Server.java:109)
at cn.wildfirechat.server.Server.main(Server.java:15)
Caused by: org.flywaydb.core.internal.sqlscript.FlywaySqlScriptException:
我在阿里云的RDS mysql 5.7.30上还是会有这个报错 SQL State : 42000 Error Code : 1071 Message : Specified key was too long; max key length is 767 bytes Location : ./migrate/mysql/V22__add_user_session_token_index.sql (/data/im/./migrate/mysql/V22__add_user_session_token_index.sql) Line : 1 Statement : alter table `t_user_session` ADD INDEX `session_token_index` ( `_token` )
at org.flywaydb.core.internal.sqlscript.DefaultSqlScriptExecutor.handleException(DefaultSqlScriptExecutor.java:253) at org.flywaydb.core.internal.sqlscript.DefaultSqlScriptExecutor.executeStatement(DefaultSqlScriptExecutor.java:202) at org.flywaydb.core.internal.sqlscript.DefaultSqlScriptExecutor.execute(DefaultSqlScriptExecutor.java:125) at org.flywaydb.core.internal.resolver.sql.SqlMigrationExecutor.execute(SqlMigrationExecutor.java:77) at org.flywaydb.core.internal.command.DbMigrate.doMigrateGroup(DbMigrate.java:367) ... 23 more Caused by: java.sql.SQLSyntaxErrorException: Specified key was too long; max key length is 767 bytes
初次启动会有上面的报错,再次启动就会提示 Exception in thread "main" org.flywaydb.core.api.FlywayException: Validate failed: Detected failed migration to version 22 (add user session token index) at org.flywaydb.core.Flyway.doValidate(Flyway.java:1482) at org.flywaydb.core.Flyway.access$100(Flyway.java:85) at org.flywaydb.core.Flyway$1.execute(Flyway.java:1364) at org.flywaydb.core.Flyway$1.execute(Flyway.java:1356) at org.flywaydb.core.Flyway.execute(Flyway.java:1711) at org.flywaydb.core.Flyway.migrate(Flyway.java:1356) at win.liyufan.im.DBUtil.init(DBUtil.java:101) at io.moquette.server.Server.startServer(Server.java:228) at io.moquette.server.Server.startServer(Server.java:220) at io.moquette.server.Server.startServer(Server.java:204) at io.moquette.server.Server.start(Server.java:114) at cn.wildfirechat.server.Server.main(Server.java:15)