首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不正确的字符串值:‘\xD8\xA7\xD9\x84\xD8\xB9.’用于第1行的“DisplayName”列

不正确的字符串值:‘\xD8\xA7\xD9\x84\xD8\xB9.’用于第1行的“DisplayName”列
EN

Stack Overflow用户
提问于 2018-04-25 09:41:44
回答 5查看 5.2K关注 0票数 2

在运行服务器端代码时,我会得到以下异常。

致命2018-04-25 14:41:59,7571 Abp.AbpBootstrapper -Abp.AbpBootstrapper-一个错误发生在更新条目.有关详细信息,请参阅内部异常。-> MySql.Data.MySqlClient.MySqlException:不正确的字符串值:‘\xD8\xA7\xD9\x84\xD8\xB9.’对于第1行的“DisplayName”列- MySql.Data.MySqlClient.MySqlException:不正确的字符串值:‘\xD8\xA7\xD9\x84\xD8\xB9.’对于System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task任务第1行的“DisplayName”( System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable1.ConfiguredValueTaskAwaiter.GetResult() at MySqlConMyCompanytor.Core.ResultSet.<ReadResultSetHeaderAsync>d\_\_1.MoveNext() in C:\projects\mysqlconMyCompanytor\src\MySqlConMyCompanytor\Core\ResultSet.cs:line 43 --- End of inner exception stack trace --- at MySql.Data.MySqlClient.MySqlDataReader.ActivateResultSet(ResultSet resultSet) in C:\projects\mysqlconMyCompanytor\src\MySqlConMyCompanytor\MySql.Data.MySqlClient\MySqlDataReader.cs:line 92 at MySql.Data.MySqlClient.MySqlDataReader.<ReadFirstResultSetAsync>d\_\_65.MoveNext() in C:\projects\mysqlconMyCompanytor\src\MySqlConMyCompanytor\MySql.Data.MySqlClient\MySqlDataReader.cs:line 297 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at MySql.Data.MySqlClient.MySqlDataReader.<CreateAsync>d\_\_64.MoveNext() in C:\projects\mysqlconMyCompanytor\src\MySqlConMyCompanytor\MySql.Data.MySqlClient\MySqlDataReader.cs:line 287 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at MySqlConMyCompanytor.Core.TextCommandExecutor.<ExecuteReaderAsync>d\_\_3.MoveNext() in C:\projects\mysqlconMyCompanytor\src\MySqlConMyCompanytor\Core\TextCommandExecutor.cs:line 70 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at MySql.Data.MySqlClient.MySqlCommand.ExecuteDbDataReader(CommandBehavior behavior) in C:\projects\mysqlconMyCompanytor\src\MySqlConMyCompanytor\MySql.Data.MySqlClient\MySqlCommand.cs:line 172 at Microsoft.EntityFrameworkCore.Storage.Internal.MySqlRelationalCommand.<ExecuteAsync>d\_\_3.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.EntityFrameworkCore.Storage.Internal.MySqlRelationalCommand.Execute(IRelationalConMyCompanytion conMyCompanytion, DbCommandMethod executeMethod, IReadOnlyDictionary2 parameterValues)在Microsoft.EntityFrameworkCore.Storage.Internal.RelationalCommand.ExecuteReader(IRelationalConMyCompanytion conMyCompanytion上的列,IReadOnlyDictionary2 parameterValues) at Microsoft.EntityFrameworkCore.Update.ReaderModificationCommandBatch.Execute(IRelationalConMyCompanytion conMyCompanytion) --- End of inner exception stack trace --- at Microsoft.EntityFrameworkCore.Update.ReaderModificationCommandBatch.Execute(IRelationalConMyCompanytion conMyCompanytion) at Microsoft.EntityFrameworkCore.Update.Internal.MySqlBatchExecutor.Execute(IEnumerable1 commandBatches,src\MyCompany.MyProject.EntityFrameworkCore\EntityFrameworkCore\Seed\SeedHelper.cs:line 41 at MyCompany.MyProject.EntityFrameworkCore.Seed.SeedHelper.SeedHostDb(IIocResolver iocResolver( C:\Users\MyName\Source\Workspaces\Workspace\FoodKioskSolution\MyCompany.MyProject\src\MyCompany.MyProject.EntityFrameworkCore\EntityFrameworkCore\Seed\SeedHelper.cs:line 17 at MyCompany.MyProject.EntityFrameworkCore.MyProjectEntityFrameworkModule.PostInitialize() in C:\Users\MyName\Source\Workspaces\Workspace\FoodKioskSolution\MyCompany.MyProject\src\MyCompany.MyProject.EntityFrameworkCore\EntityFrameworkCore\MyProjectEntityFrameworkModule.cs:)System.Collections.Generic.List1.ForEach(Action1动作的第46行)在D:\Github\aspnetboilerplate\src\Abp\AbpBootstrapper.cs:line 155中的Abp.AbpBootstrapper.Initialize()

异常在文件DefaultLanguagesCreator.cs

代码语言:javascript
复制
using System.Collections.Generic;
using System.Linq;
using Microsoft.EntityFrameworkCore;
using Abp.Localization;

namespace MyCompany.MyProject.EntityFrameworkCore.Seed.Host
{
    public class DefaultLanguagesCreator
    {
        public static List<ApplicationLanguage> InitialLanguages => GetInitialLanguages();

        private readonly SparDbContext _context;

        private static List<ApplicationLanguage> GetInitialLanguages()
        {
            return new List<ApplicationLanguage>
            {
                new ApplicationLanguage(null, "en", "English", "famfamfam-flags gb"),
                new ApplicationLanguage(null, "ar", "???????", "famfamfam-flags sa"),
                new ApplicationLanguage(null, "de", "German", "famfamfam-flags de"),
                new ApplicationLanguage(null, "it", "Italiano", "famfamfam-flags it"),
                new ApplicationLanguage(null, "fr", "Français", "famfamfam-flags fr"),
                new ApplicationLanguage(null, "pt-BR", "Portuguese", "famfamfam-flags br"),
                new ApplicationLanguage(null, "tr", "Türkçe", "famfamfam-flags tr"),
                new ApplicationLanguage(null, "ru", "???????", "famfamfam-flags ru"),
                new ApplicationLanguage(null, "zh-CN", "????", "famfamfam-flags cn"),
                new ApplicationLanguage(null, "es-MX", "Español México", "famfamfam-flags mx"),
                new ApplicationLanguage(null, "nl", "Nederlands", "famfamfam-flags nl"),
                new ApplicationLanguage(null, "ja", "???", "famfamfam-flags jp")
            };
        }

        public DefaultLanguagesCreator(SparDbContext context)
        {
            _context = context;
        }

        public void Create()
        {
            CreateLanguages();
        }

        private void CreateLanguages()
        {
            foreach (var language in InitialLanguages)
            {
                AddLanguageIfNotExists(language);
            }
        }

        private void AddLanguageIfNotExists(ApplicationLanguage language)
        {
            if (_context.Languages.IgnoreQueryFilters().Any(l => l.TenantId == language.TenantId && l.Name == language.Name))
            {
                return;
            }

            _context.Languages.Add(language);
            _context.SaveChanges();
        }
    }
}

这是对阿拉伯语的例外。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2018-05-24 12:03:18

谢谢你的建议,道尔顿和拉霍斯,这对解决这个问题确实有帮助。

在你的建议的帮助下,我找到了解决办法。这不是EF核心问题,它是在我的MySql中配置的默认排序规则。因此,您必须更改数据库上的默认排序规则。我在数据库中使用了latin1 -默认排序规则“,这对于插入Unicode和非英语单词并不有用,请运行下面的查询来更改数据库中所有表的排序规则。

代码语言:javascript
复制
SELECT CONCAT("ALTER TABLE `", TABLE_NAME,"` convert to character set utf8 collate utf8_unicode_ci;") AS    mySQL
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA="<YouDatabaseName>"
AND TABLE_TYPE="BASE TABLE"

如果您不想在MySQL中运行这个查询,那么可以在代码迁移中添加上面的脚本。

票数 5
EN

Stack Overflow用户

发布于 2018-09-29 14:57:28

将您的数据库和所有表类间设置为'utf8_unicode_ci‘,您可以手动执行或执行此查询:

数据库:

代码语言:javascript
复制
ALTER DATABASE <database-name> CHARACTER SET utf8 COLLATE utf8_unicode_ci;

表:

代码语言:javascript
复制
 ALTER TABLE <table-name> CHARACTER SET utf8 COLLATE utf8_unicode_ci;

下面是包含更多细节和逐步指南的链接

票数 2
EN

Stack Overflow用户

发布于 2018-04-25 09:53:25

您的SQL中有一个错误,特别是试图分配的varchar。占有性原因:

  • 您可能在应用程序中使用与您的字段所期望的编码不同的编码。
  • 您可能正在尝试插入一个varchar,它比您的字段所允许的最大长度长。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50018937

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档