第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

如何更改數(shù)據(jù)庫的默認(rèn)排序規(guī)則?

如何更改數(shù)據(jù)庫的默認(rèn)排序規(guī)則?

繁星淼淼 2019-11-22 13:20:31
我們以前的程序員在表(Mysql)中設(shè)置了錯(cuò)誤的排序規(guī)則。他使用拉丁文歸類(應(yīng)為UTF8)進(jìn)行設(shè)置,現(xiàn)在我遇到了問題。每個(gè)帶有中文和日文字符的記錄都變成??? 字符。是否可以更改排序規(guī)則并找回角色的細(xì)節(jié)?
查看完整描述

3 回答

?
qq_花開花謝_0

TA貢獻(xiàn)1835條經(jīng)驗(yàn) 獲得超7個(gè)贊

更改數(shù)據(jù)庫排序規(guī)則:


ALTER DATABASE <database_name> CHARACTER SET utf8 COLLATE utf8_unicode_ci;

更改表排序規(guī)則:


ALTER TABLE <table_name> CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;

更改列排序規(guī)則:


ALTER TABLE <table_name> MODIFY <column_name> VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci;


查看完整回答
反對(duì) 回復(fù) 2019-11-22
?
飲歌長(zhǎng)嘯

TA貢獻(xiàn)1951條經(jīng)驗(yàn) 獲得超3個(gè)贊

以下是如何更改所有數(shù)據(jù)庫/表/列的方法。運(yùn)行這些查詢,它們將輸出將整個(gè)模式轉(zhuǎn)換為utf8所需的所有后續(xù)查詢。希望這可以幫助!


-更改數(shù)據(jù)庫默認(rèn)排序規(guī)則


SELECT DISTINCT concat('ALTER DATABASE `', TABLE_SCHEMA, '` CHARACTER SET utf8 COLLATE utf8_unicode_ci;')

from information_schema.tables

where TABLE_SCHEMA like  'database_name';

-更改表排序規(guī)則/字符集


SELECT concat('ALTER TABLE `', TABLE_SCHEMA, '`.`', table_name, '` CHARACTER SET utf8 COLLATE utf8_unicode_ci;')

from information_schema.tables

where TABLE_SCHEMA like 'database_name';

-更改列排序規(guī)則/字符集


SELECT concat('ALTER TABLE `', t1.TABLE_SCHEMA, '`.`', t1.table_name, '` MODIFY `', t1.column_name, '` ', t1.data_type , '(' , t1.CHARACTER_MAXIMUM_LENGTH , ')' , ' CHARACTER SET utf8 COLLATE utf8_unicode_ci;')

from information_schema.columns t1

where t1.TABLE_SCHEMA like 'database_name' and t1.COLLATION_NAME = 'old_charset_name';


查看完整回答
反對(duì) 回復(fù) 2019-11-22
?
梵蒂岡之花

TA貢獻(xiàn)1900條經(jīng)驗(yàn) 獲得超5個(gè)贊

除了David Whittaker發(fā)布的內(nèi)容之外,我還創(chuàng)建了一個(gè)查詢,該查詢生成完整的表和將更改每個(gè)表的列alter語句。跑步可能是一個(gè)好主意


SET SESSION group_concat_max_len = 100000;


首先要確保您的小組比賽不會(huì)超過這里看到的很小的限制。


     SELECT a.table_name, concat('ALTER TABLE ', a.table_schema, '.', a.table_name, ' DEFAULT CHARACTER SET utf8mb4 DEFAULT COLLATE utf8mb4_unicode_ci, ',

        group_concat(distinct(concat(' MODIFY ',  column_name, ' ', column_type, ' CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ', if (is_nullable = 'NO', ' NOT', ''), ' NULL ',

        if (COLUMN_DEFAULT is not null, CONCAT(' DEFAULT \'', COLUMN_DEFAULT, '\''), ''), if (EXTRA != '', CONCAT(' ', EXTRA), '')))), ';') as alter_statement

    FROM information_schema.columns a

    INNER JOIN INFORMATION_SCHEMA.TABLES b ON a.TABLE_CATALOG = b.TABLE_CATALOG

        AND a.TABLE_SCHEMA = b.TABLE_SCHEMA

        AND a.TABLE_NAME = b.TABLE_NAME

        AND b.table_type != 'view'

    WHERE a.table_schema = ? and (collation_name = 'latin1_swedish_ci' or collation_name = 'utf8mb4_general_ci')

    GROUP BY table_name;

上一個(gè)答案之間的區(qū)別是它使用utf8而不是ut8mb4并使用t1.data_type和t1.CHARACTER_MAXIMUM_LENGTH對(duì)于枚舉無效。另外,我的查詢排除了視圖,因?yàn)檫@些視圖必須分別更改。


我只是使用Perl腳本將所有這些更改作為數(shù)組返回并遍歷它們,修復(fù)了過長(zhǎng)的列(通常為varchar(256),當(dāng)數(shù)據(jù)中通常只有20個(gè)字符時(shí),因此很容易解決)。


從latin1-> utf8mb4進(jìn)行更改時(shí),我發(fā)現(xiàn)某些數(shù)據(jù)已損壞??磥硎莡tf8編碼的latin1字符在列中會(huì)在轉(zhuǎn)換中出錯(cuò)。我只是簡(jiǎn)單地保存了更改前后的列中的數(shù)據(jù),這些列我知道這將是內(nèi)存中的問題,并對(duì)其進(jìn)行比較并生成用于修復(fù)數(shù)據(jù)的更新語句。


查看完整回答
反對(duì) 回復(fù) 2019-11-22
  • 3 回答
  • 0 關(guān)注
  • 2097 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)