siteserver / cms

SS CMS 基于 .NET Core,能够以最低的成本、最少的人力投入在最短的时间内架设一个功能齐全、性能优异、规模庞大并易于维护的网站平台。
https://sscms.com
GNU Affero General Public License v3.0
3.65k stars 1.2k forks source link

发现BUG一个。CLI命令行备份并升级还原 3.64到6.76(在线升级到最新的)出问题 #1575

Open boyzm opened 5 years ago

boyzm commented 5 years ago

bug。CLI命令行备份并升级错误, 我从3.64升级到最新版,数据库从原Mssql2017 Linux版到Mysql(新建表,无数据) 备份,升级都正常,在恢复时显示成功,但是在Mysql里有部分数据和全部的表(系统表空行,内容表有数据) 报错log说表已经存在。请查证

{"dateTime":"2018-11-11 00:50","detail":"创建表 siteserver_Administrator: CREATE TABLE siteserver_Administrator (\r\nId INT AUTO_INCREMENT,UserName varchar(255),Password varchar(255),PasswordFormat varchar(50),PasswordSalt varchar(128),CreationDate datetime,LastActivityDate datetime,CountOfLogin int,CountOfFailedLogin int,CreatorUserName varchar(255),IsLockedOut varchar(18),SiteIdCollection varchar(50),SiteId int,DepartmentId int,AreaId int,DisplayName varchar(50),Email varchar(50),Mobile varchar(20),PRIMARY KEY (Id)\r\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4","message":"Table 'siteserver_Administrator' already exists","stackTrace":" 在 MySql.Data.MySqlClient.MySqlStream.ReadPacket()\r\n 在 MySql.Data.MySqlClient.NativeDriver.GetResult(Int32& affectedRow, Int64& insertedId)\r\n 在 MySql.Data.MySqlClient.Driver.GetResult(Int32 statementId, Int32& affectedRows, Int64& insertedId)\r\n 在 MySql.Data.MySqlClient.Driver.NextResult(Int32 statementId, Boolean force)\r\n 在 MySql.Data.MySqlClient.MySqlDataReader.NextResult()\r\n 在 MySql.Data.MySqlClient.MySqlCommand.ExecuteReader(CommandBehavior behavior)\r\n 在 MySql.Data.MySqlClient.MySqlCommand.ExecuteNonQuery()\r\n 在 SiteServer.CMS.Plugin.Apis.DatabaseApi.ExecuteNonQuery(IDbCommand command) 位置 C:\projects\cms\SiteServer.CMS\Plugin\Apis\DatabaseApi.cs:行号 738\r\n 在 SiteServer.CMS.Plugin.Apis.DatabaseApi.ExecuteNonQuery(IDbConnection connection, String commandText, IDataParameter[] commandParameters) 位置 C:\projects\cms\SiteServer.CMS\Plugin\Apis\DatabaseApi.cs:行号 1069\r\n 在 SiteServer.CMS.Plugin.Apis.DatabaseApi.ExecuteNonQuery(String connectionString, String commandText, IDataParameter[] commandParameters) 位置 C:\projects\cms\SiteServer.CMS\Plugin\Apis\DatabaseApi.cs:行号 795\r\n 在 SiteServer.CMS.Plugin.Apis.DatabaseApi.ExecuteNonQuery(String connectionString, String commandText) 位置 C:\projects\cms\SiteServer.CMS\Plugin\Apis\DatabaseApi.cs:行号 769\r\n 在 SiteServer.CMS.Data.DataProviderBase.ExecuteNonQuery(String commandText) 位置 C:\projects\cms\SiteServer.CMS\Data\DataProviderBase.cs:行号 196\r\n 在 SiteServer.CMS.Provider.DatabaseDao.CreateTable(String tableName, List`1 tableColumns, Exception& ex, String& sqlString) 位置 C:\projects\cms\SiteServer.CMS\Provider\DatabaseDao.cs:行号 811"}

boyzm commented 5 years ago

从原mssql 库通过cli备份升级还原的话,再导入mysql新库中会少数据,部分表为空,cli已经建表,但无内容导入,显示成功,但是在mysql里数据不全,报错说表已经存在,都是空表,升级前是新库无内容无表。 MSSQL对MSSQL无此问题~ MSSQL对MYSQL有此问题

starlying commented 5 years ago

CLI还原命令运行前需要确保目标数据库是空数据库,不能创建表 看看是不是这个导致的

boyzm commented 5 years ago

不是这个原因,都是新库,ms没问题,my就不行

starlying commented 5 years ago

哦,mysql我们确认一下

boyzm commented 5 years ago

cli备份ms版本的,还原成my的出问题哈。。ms对ms没问题

starlying commented 5 years ago

好的,可能是不同的数据格式导致的,我们测测