我有一个cronjob,它通过调用API来保存数据。以前从未发生过这种情况,我已经将排序规则更改为latin1_swedish_ci,IMPLICIT和utf8mb4_unicode_ci,COERCIBLE,反之亦然,以便进行测试。但我还是会犯这样的错误。奇怪的是,当我检查数据库时,我可以插入一半的数据,在插入过程中会出现错误。
Illuminate\Database\QueryException : SQLSTATE[HY000]: General error: 1267 Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and
mysql Ver 8.0.25
在apache日志中获得了此错误:
错误查询: SQLSTATEHY000:一般错误: 1267非法排序规则(utf8mb4_unicode_ci,隐式)和(utf8_general_ci,强制)的操作'=‘在查询:选择idaction,type,name从matomo_log_action (散列= CRC32(?)名字呢?和类型=?) ...
这是表的信息:
mysql> SHOW FULL COLUMNS FROM matomo_log_action;
+------------+------------------+-----------
我在导入数据时遇到问题排序规则是什么意思?
我问这个问题的原因是我总是在导入数据时出错。因此,我正在查看wp-config文件,排序规则如下所示。
/** Database Charset to use in creating database tables. */
define('DB_CHARSET', 'utf8mb4');
/** The Database Collate type. Don't change this if in doubt. */
define('DB_COLLATE', '');
所以我转到
我正在更改windows上的my.ini文件,该文件位于C:/ProgramData/MySQL/MySQL /MySQL服务器5.6中,但它只更改某些character_sets的值,如果您在下面的phpmyadmin中运行SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%';时,它会显示其中一些选项的utf8。
**Variable_name** **Value**
character_set_clien
最近,我完成了数据库从CHARSET=utf8 COLLATE=latin1到CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci的转换。在此过程中,通过更改表各自的字符集和排序规则属性,每次迁移一个表。
既然转换已经完成,所有服务器和数据库本身都已设置为使用utf8mb4和utf8mb4_unicode_ci,那么我将如何从列和表中删除这些属性,以便它们继承服务器上的默认值集?
例如,目前,如果我对大多数列执行SHOW FULL COLUMNS FROM table;排序规则,则将其设置为utf8mb4_unicode_ci而不是NULL。
上下文:尝试将Twitter文本加载到MySQL DB中。有些推特有utf8mb4字符,它会抛出一个java.SQL.Exception。我解决了这个问题,多亏了
现在,Java代码运行时没有错误;但是,我不能在我的表上执行一个简单的select * from test.tweet。
我得到以下SQL错误:
错误代码:045)。请提交报告(
SQL代码:
create table test.tweet (
text varchar(200) character set utf8mb4 collate utf8mb4_unicode_ci not null);
Java代码:(我知
我在本地(MAMP)上开发了一个laravel 7应用程序。我现在想在我的网站主机帐户(apache2,php7.4,mysql server)上设置它。我做了一个git拉下所有的文件,现在当我做一个 php artisan migrate 我收到一个错误,显示 SQLSTATE[HY000] [2002] No such file or directory (SQL: create table `migrations` (`id` int unsigned not null auto_increment primary key, `migration` varchar(191) not
最近,我注意到很少有查询在执行过程中花费了很长时间,进一步检查后发现,MySQL优化器试图在Where子句中使用排序规则,这会导致性能问题,如果我在没有排序规则的情况下运行以下查询,然后从数据库获得快速响应:
SELECT notification_id FROM notification
WHERE ref_table = 2
AND ref_id = NAME_CONST('v_wall_detail_id',_utf8mb4'c37e32fc-b3b5-11ec-befc-02447a44a47c' COLLATE 'ut
对于我的数据库,我使用utf8mb4_unicode_ci和utf8mb4字符集作为默认设置。这是一个错误,使用我创建的数据库的人都在抱怨排序规则。我需要把它转换成utf8mb4_general_ci。我是否能够通过使用alter语句来更改DB,比如:
ALTER DATABASE `#{database}` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
或者,即使字符集在两个排序规则之间是相同的,我是否需要更改每个表并处理列呢?我似乎找不到确切的答案.我使用的是MySQL 5.7.2x。
在同一个数据库中,我运行查询,得到一个正确的和一个不正确的结果。
校正
SELECT Ort FROM `stammdaten` WHERE `Ort` = 'Husby';
Ort
Husby
Husby
错误
SELECT Ort FROM stammdaten WHERE Ort = 'Hüsby';
Ort
Husby
Husby
数据库: utf8mb4_unicode_ci
表: utf8mb4_unicode_ci
字段: utf8mb4_unicode_ci
有谁知道我还能改变什么或检查什么吗?