当我们在mysql中创建一个包含VARCHAR列的表时,我们必须为它设置长度.但对于TEXT类型我们不必提供长度.
VARCHAR和之间有什么区别TEXT?
create table check2(f1 varchar(20),f2 varchar(20));
Run Code Online (Sandbox Code Playgroud)
使用默认排序规则创建表格latin1_general_ci;
alter table check2 collate latin1_general_cs;
show full columns from check2;
Run Code Online (Sandbox Code Playgroud)
将列的各个排序规则显示为"latin1_general_ci".
然后alter table命令的作用是什么?
根据您的经验,到目前为止,哪些Unicode字符,代码点,BMP(基本多语言平面)之外的范围是最常见的?这些是需要UTF-8中的4个字节或UTF-16中的代理项.
我希望答案是在名称中使用的中文和日文字符,但不包括在最广泛的CJK多字节字符集中,但在我最常用的项目上,英文维基词典,我们发现哥特字母是到目前为止更为常见.
UPDATE
我写了几个软件工具来扫描整个维基百科上的非BMP字符,我惊讶地发现,即使在日语维基百科中,哥特字母也是最常见的.在中文维基百科中也是如此,但它也有许多中文字符被使用多达50或70次,包括"",""和"".
当我尝试将外来字符插入数据库时,可能导致此错误的原因是什么?
>>UnicodeEncodeError: 'latin-1' codec can't encode character u'\u201c' in position 0: ordinal not in range(256)
Run Code Online (Sandbox Code Playgroud)
我该如何解决?
谢谢!
我有一个包含瑞典语/挪威语字符串的数据库表.
当我查询一些数据时,我得到如下输出:
set names latin1;+-----------------------------------+
| name |
+-----------------------------------+
| Kid Interi##### |
| Bwg Homes |
| If Skadef####kring |
| Jangaard Export |
| Nordisk Film |
+-----------------------------------+
Run Code Online (Sandbox Code Playgroud)
现在如果我set names utf8;为了看到具有正确编码的字符,则MySQL命令行的表格输出的格式化会中断.
set names utf8;+-----------------------------------+
| name |
+-----------------------------------+
| Kid Interiør |
| Bwg Homes |
| If Skadeförsäkring |
| Jangaard Export |
| Nordisk Film |
+-----------------------------------+
Run Code Online (Sandbox Code Playgroud)
这不是一个大问题,但它使输出更难阅读.有人知道如何保持表格格式完整吗?
我的要求是存储查询的整个结果
SELECT * FROM document
WHERE documentid IN (SELECT * FROM TaskResult WHERE taskResult = 2429)
Run Code Online (Sandbox Code Playgroud)
到Excel文件.
我来自SQL Server背景.MySQL中的以下等效数据类型是什么:
NVARCHAR - 为所有语言的国际多字节字符提供支持
NVARCHAR(max) - 允许很长的文本文档
我使用Python3,并尝试使用mysql.com中的MySQL Connector/Python
我有UTF-8编码表,当我获取行时,我的所有字符列都返回像bytearray一样.这让人有些困惑.
我怎么能直接获取str?
UPD:
# -*- coding: utf-8 -*-
import mysql.connector
con = mysql.connector.connect( user ="root", db = "vg_site_db", charset = 'utf8' )
cursor = con.cursor()
sql = """select caption from domains
"""
cursor.execute( sql )
row = cursor.fetchone()
while row is not None:
print( row )
row = cursor.fetchone()
Run Code Online (Sandbox Code Playgroud)
输出:
(bytearray(b'ezsp.ru'),)
(bytearray(b'eazyshop.ru'),)
(bytearray(b'127.0.0.1:8080'),)
(bytearray(b'rmsvet.ru'),)
Run Code Online (Sandbox Code Playgroud)
我想要:
('ezsp.ru',)
('eazyshop.ru',)
('127.0.0.1:8080',)
('rmsvet.ru',)
Run Code Online (Sandbox Code Playgroud)
UPD2:
我的表使用COLLATE utf8_bin
我试图让我的mysql图像运行utf-8编码.我的docker-compose文件看起来像:
version: '2'
services:
db:
container_name: zoho-grabber-db-development
image: mysql:5.7
environment:
- MYSQL_ROOT_PASSWORD=topsecret
- MYSQL_DATABASE=development
- MYSQL_USER=devuser
- MYSQL_PASSWORD=secure
ports:
- "3306:3306"
command: mysqld --character-set-server=utf8 --collation-server=utf8_general_ci
Run Code Online (Sandbox Code Playgroud)
当我运行它,它说
$ docker-compose -f docker-compose.development.yml up
Removing zoho-grabber-db-development
Recreating 1b341fd7916e_1b341fd7916e_zoho-grabber-db-development
ERROR: for db Cannot start service db: oci runtime error: container_linux.go:247: starting container process caused "exec: \"mysqld\": executable file not found in $PATH"
ERROR: Encountered errors while bringing up the project.
Run Code Online (Sandbox Code Playgroud)
为什么找不到mysqld?以及如何实现我的目标?
最近我将一堆列更改为utf8_general_ci(默认的UTF-8排序规则),但在尝试更改特定列时,我收到了MySQL错误:
Column 'node_content' cannot be part of FULLTEXT index
Run Code Online (Sandbox Code Playgroud)
在查看文档时,似乎MySQL在某些多字节字符集(例如UCS-2)上存在FULLTEXT索引问题,但它应该适用于UTF-8.
我正在使用最新稳定的MySQL 5.0.x版本(我相信5.0.77).