- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我尝试在 Grails 中以 cp1251_general_ci 编码(支持俄语字符)使用 MySQL。但是当我启动我的应用程序时,当 bootstrap.gsp
执行时,我收到此错误:
2015-06-04 15:52:28,889 [localhost-startStop-1]
ERROR spi.SqlExceptionHelper - Illegal mix of collations (cp1251_general_ci,IMPLICIT) and (latin1_swedish_ci,COERCIBLE)
for operation '='
在 MySQL 中,我删除了旧数据库并使用所需的编码创建了新数据库,但仍然出现此错误。我能做什么来修复它?
最佳答案
修复实际上取决于引发错误的语句。
基本上,MySQL 会提示 =
两侧的表达式,即字符集/排序规则不兼容。
该错误是由于所比较的两个表达式之间的字符集不匹配造成的。
当我运行创建内联 View (派生表)的语句时,通常会遇到此错误,并且派生表(如预期)是使用客户端连接的字符集创建的,然后在外部查询中使用等式与具有不兼容字符集的表中的列进行比较,例如:
SELECT l.latin1col
FROM latin1table l
JOIN (SELECT 'utf8string' AS utf8col) s
ON s.utf8col = l.latin1col
未指定内联 View 中列的字符集,因此派生表从 character_set_connection
变量继承该字符集。一种可能的解决方法是更改 session 变量的设置。 (然后,当该语句运行时,派生表中的列将是该字符集。)
另一个修复是指定内联 View 中列的字符集,例如
SELECT l.latin1col
FROM latin1table l
JOIN (SELECT _latin1'utf8string' AS latin1col) s
-- ^^^^^^^
ON s.latin1col = l.latin1col
<小时/>
要解决您的问题,您需要弄清楚哪个表达式是哪个字符集,并在一侧或另一侧进行适当的调整。
也就是说,cp1251_general_ci
排序规则是来自客户端连接,还是来自表列。
如果您在语句中使用文字,则可以将其转换为合适的字符集/排序规则,以便使用 CONVERT
函数与不同字符集/排序规则的列进行比较...
例如,而不是这个:
WHERE col = 'myliteral'
你可以这样做:
WHERE col = CONVERT('myliteral' USING latin1)
-或- 对于文字值,您也可以这样做
WHERE col = _latin1'myliteral'
如果您还需要指定排序规则,则可以在其后使用 COLLATE 关键字并指定对字符集有效的排序规则:
WHERE col = CONVERT('myliteral' USING latin1) COLLATE latin1_swedish_ci
<小时/>
从您的问题中不清楚 character_set_connection
和 collation_connection
变量的设置是什么。
SELECT @@session.character_set_connection
, @@session.collation_connection
, @@global.character_set_connection
, @@global.collation
或者数据库中字符列的字符集和排序规则设置为,
SHOW CREATE TABLE mytable;
<小时/>
注意:
数据库级别的字符集设置是一个默认值,该值应用于添加到数据库中且未定义字符集/排序规则的新表。
表的“默认字符集”设置是将用于添加的未指定字符集/排序规则的新列的字符集。
发出一条语句来更改表的字符集,如下所示:
ALTER TABLE mytable CHARACTER SET latin1 COLLATE latin1_swedish_ci
不更改表中已有列的字符集或排序规则。它仅影响添加的未指定字符集/排序规则的新列。同样的事情也适用于 ALTER DATABASE 语句...它对现有表和列没有任何影响,仅对创建的未指定字符集/排序规则的新表有任何影响。
关于mysql - Grails 中非法混合排序规则 (cp1251_general_ci,IMPLICIT) 和 (latin1_swedish_ci,COERCIBLE),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30643683/
我需要将文本放在 中在一个 Div 中,在另一个 Div 中,在另一个 Div 中。所以这是它的样子: #document Change PIN
奇怪的事情发生了。 我有一个基本的 html 代码。 html,头部, body 。(因为我收到了一些反对票,这里是完整的代码) 这是我的CSS: html { backgroun
我正在尝试将 Assets 中的一组图像加载到 UICollectionview 中存在的 ImageView 中,但每当我运行应用程序时它都会显示错误。而且也没有显示图像。 我在ViewDidLoa
我需要根据带参数的 perl 脚本的输出更改一些环境变量。在 tcsh 中,我可以使用别名命令来评估 perl 脚本的输出。 tcsh: alias setsdk 'eval `/localhome/
我使用 Windows 身份验证创建了一个新的 Blazor(服务器端)应用程序,并使用 IIS Express 运行它。它将显示一条消息“Hello Domain\User!”来自右上方的以下 Ra
这是我的方法 void login(Event event);我想知道 Kotlin 中应该如何 最佳答案 在 Kotlin 中通配符运算符是 * 。它指示编译器它是未知的,但一旦知道,就不会有其他类
看下面的代码 for story in book if story.title.length < 140 - var story
我正在尝试用 C 语言学习字符串处理。我写了一个程序,它存储了一些音乐轨道,并帮助用户检查他/她想到的歌曲是否存在于存储的轨道中。这是通过要求用户输入一串字符来完成的。然后程序使用 strstr()
我正在学习 sscanf 并遇到如下格式字符串: sscanf("%[^:]:%[^*=]%*[*=]%n",a,b,&c); 我理解 %[^:] 部分意味着扫描直到遇到 ':' 并将其分配给 a。:
def char_check(x,y): if (str(x) in y or x.find(y) > -1) or (str(y) in x or y.find(x) > -1):
我有一种情况,我想将文本文件中的现有行包含到一个新 block 中。 line 1 line 2 line in block line 3 line 4 应该变成 line 1 line 2 line
我有一个新项目,我正在尝试设置 Django 调试工具栏。首先,我尝试了快速设置,它只涉及将 'debug_toolbar' 添加到我的已安装应用程序列表中。有了这个,当我转到我的根 URL 时,调试
在 Matlab 中,如果我有一个函数 f,例如签名是 f(a,b,c),我可以创建一个只有一个变量 b 的函数,它将使用固定的 a=a1 和 c=c1 调用 f: g = @(b) f(a1, b,
我不明白为什么 ForEach 中的元素之间有多余的垂直间距在 VStack 里面在 ScrollView 里面使用 GeometryReader 时渲染自定义水平分隔线。 Scrol
我想知道,是否有关于何时使用 session 和 cookie 的指南或最佳实践? 什么应该和什么不应该存储在其中?谢谢! 最佳答案 这些文档很好地了解了 session cookie 的安全问题以及
我在 scipy/numpy 中有一个 Nx3 矩阵,我想用它制作一个 3 维条形图,其中 X 轴和 Y 轴由矩阵的第一列和第二列的值、高度确定每个条形的 是矩阵中的第三列,条形的数量由 N 确定。
假设我用两种不同的方式初始化信号量 sem_init(&randomsem,0,1) sem_init(&randomsem,0,0) 现在, sem_wait(&randomsem) 在这两种情况下
我怀疑该值如何存储在“WORD”中,因为 PStr 包含实际输出。? 既然Pstr中存储的是小写到大写的字母,那么在printf中如何将其给出为“WORD”。有人可以吗?解释一下? #include
我有一个 3x3 数组: var my_array = [[0,1,2], [3,4,5], [6,7,8]]; 并想获得它的第一个 2
我意识到您可以使用如下方式轻松检查焦点: var hasFocus = true; $(window).blur(function(){ hasFocus = false; }); $(win
我是一名优秀的程序员,十分优秀!