我有一张表,当我从表中选择时,我得到了无效数据
mysql> select budgetID,StartDate,modifiedBy from Table_name order by budgetID desc limit 10;
+----------+---------------------+----------------------+
| budgetID | StartDate | modifiedBy |
+----------+---------------------+----------------------+
| 364 | $091-24-68 27:49:32 | -9187343239835811836 |
| 363 | NULL | -9187343239835811840 |
| 362 | $091-24-69 14:21:19 | -9187343239835811840 |
| 361 | $091-24-69 14:21:19 | -9187343239835811840 |
| 360 | $091-24-69 14:21:19 | -9187343239835811840 |
| 359 | $091-24-69 14:21:19 | -9187343239835811840 |
| 358 | �301-32-83 19:54:95 | -9187343239835811840 |
| 357 | �301-32-83 19:54:95 | -9187343239835811840 |
| 356 | $091-24-69 05:61:82 | -9187343239835811840 |
| 355 | �301-32-83 10:95:58 | -9187343239835811840 |
+----------+---------------------+----------------------+
我已将 budgetID=365 的值插入为
budgetID 351
StartDate 2012-02-01 00:00:00
modifiedBy 1055
但是在选择结果时我得到了无效的输出。
其中 budgetID 是 Primay key bigint,StartDate 是 datetime 和 modifiedBy bigint。
和
mysql> show variables like "%character%";
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)
mysql> show variables like "%colla%";
+----------------------+-------------------+
| Variable_name | Value |
+----------------------+-------------------+
| collation_connection | utf8_general_ci |
| collation_database | latin1_swedish_ci |
| collation_server | latin1_swedish_ci |
+----------------------+-------------------+
这背后的问题可能是什么?
当我创建一个与该表具有相同结构的表并插入记录时,选择查询显示结果正常。
根据您的默认数据库编码character_set_database=latin1,您应该强制您的客户端使用 latin1。您的客户端当前使用的是 utf8,而数据库似乎使用的是 latin1。这假定您的表也使用 latin1。
为确保您的数据正确存储在 MySQL 中,您可以强制 mysql 客户端使用 latin1。
1强制客户端使用 latin1
然后运行您的 SELECT 语句以验证字符格式
2使用latin1备份数据库
您还可以使用相同的选项转储数据库
然后,您可以使用标准文本编辑器(如 textpad 或 gedit)查看转储文件 nameofthedatabase.sql 以查看字符编码是否正确。
排序规则是一组规则,用于确定行的排序方式和比较方式。排序规则不会影响您当前遇到的问题的编码。
如果这两个选项仍然给您奇怪的符号,则导入文件可能一开始就没有正确格式化。