Jetzt ist die Datenbank latin1_general_ci
und ich möchte die Sortierung in utf8_general_ci
ändern. Gibt es in PhpMyAdmin eine Einstellung, um die Sortierung von Datenbank, Tabelle und Spalte zu ändern? Anstatt sich einzeln zu ändern?Wie ändert man die Sortierung von Datenbank, Tabelle, Spalte?
Antwort
Sie müssen entweder jede Tabelle konvertieren individuell:
ALTER TABLE mytable CONVERT TO CHARACTER SET utf8
(dies die Spalten konvertieren genauso gut) oder die Datenbank exportieren mit latin1
und importieren Sie es mit utf8
zurück.
Aber ich will Sortierung der Spalten ändern Dies ändert nur die Tabellenkollation. – user158469
'@ rsensan':' CONVERT' ändert auch die Kollatierung von Spalten. – Quassnoi
Es kann mit PHP-Skript gemacht werden. – hkasera
Sie Standardsortierung auf mehreren Ebenen festlegen:
http://dev.mysql.com/doc/refman/5.0/en/charset-syntax.html
1) Client 2) Server-Standard 3) Datenbank Standard 4) Tabelle Standard 5) Spalte
Sie können Führen Sie ein PHP-Skript aus.
<?php
$con = mysql_connect('localhost','user','password');
if(!$con) { echo "Cannot connect to the database ";die();}
mysql_select_db('dbname');
$result=mysql_query('show tables');
while($tables = mysql_fetch_array($result)) {
foreach ($tables as $key => $value) {
mysql_query("ALTER TABLE $value CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci");
}}
echo "The collation of your database has been successfully changed!";
?>
vielen Dank bro. :) –
Gute Arbeit. Gespeichertes Leben ... Danke –
Um Sortierung für Tabellen Sie können einzeln zu ändern, verwenden
ALTER TABLE mytable CONVERT TO CHARACTER SET utf8
Standardsortierung für die gesamte Datenbank einzustellen,
ALTER DATABASE `databasename` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin
oder sonst,
Goto PhpMyAdmin -> Operationen-> Sortierung.
Dort finden Sie die Auswahlbox, die alle vorhandenen Sortierungen enthält. Hier können Sie Ihre Sortierung ändern. Nach der Datenbanktabelle folgt diese Kollatierung, während Sie eine neue Spalte erstellen. Es ist nicht erforderlich, beim Erstellen neuer Spalten eine Sortierung auszuwählen.
Vielen Dank, das war hilfreich – JoZ3
Sie können die CHARSET und COLLATION aller Ihrer Tabellen durch PHP-Skript wie folgt ändern. Ich mag die Antwort von hkasera, aber das Problem dabei ist, dass die Abfrage zweimal auf jeder Tabelle ausgeführt wird. Dieser Code ist fast derselbe, außer dass MySqli anstelle von mysql verwendet wird und doppelte Abfragen verhindert werden. Wenn ich abstimmen könnte, hätte ich die Antwort von hkasera gewählt.
<?php
$conn1=new MySQLi("localhost","user","password","database");
if($conn1->connect_errno){
echo mysqli_connect_error();
exit;
}
$res=$conn1->query("show tables") or die($conn1->error);
while($tables=$res->fetch_array()){
$conn1->query("ALTER TABLE $tables[0] CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci") or die($conn1->error);
}
echo "The collation of your database has been successfully changed!";
$res->free();
$conn1->close();
?>
ich es hier zu lesen, dass Sie jede Tabelle manuell konvertieren müssen, ist es nicht wahr. Hier ist eine Lösung, wie sie mit einer gespeicherten Prozedur zu tun:
DELIMITER $$
DROP PROCEDURE IF EXISTS changeCollation$$
-- character_set parameter could be 'utf8'
-- or 'latin1' or any other valid character set
CREATE PROCEDURE changeCollation(IN character_set VARCHAR(255))
BEGIN
DECLARE v_finished INTEGER DEFAULT 0;
DECLARE v_table_name varchar(255) DEFAULT "";
DECLARE v_message varchar(4000) DEFAULT "No records";
-- This will create a cursor that selects each table,
-- where the character set is not the one
-- that is defined in the parameter
DECLARE alter_cursor CURSOR FOR SELECT DISTINCT TABLE_NAME
FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = DATABASE()
AND COLLATION_NAME NOT LIKE CONCAT(character_set, '_%');
-- This handler will set the value v_finished to 1
-- if there are no more rows
DECLARE CONTINUE HANDLER
FOR NOT FOUND SET v_finished = 1;
OPEN alter_cursor;
-- Start a loop to fetch each rows from the cursor
get_table: LOOP
-- Fetch the table names one by one
FETCH alter_cursor INTO v_table_name;
-- If there is no more record, then we have to skip
-- the commands inside the loop
IF v_finished = 1 THEN
LEAVE get_table;
END IF;
IF v_table_name != '' THEN
IF v_message = 'No records' THEN
SET v_message = '';
END IF;
-- This technic makes the trick, it prepares a statement
-- that is based on the v_table_name parameter and it means
-- that this one is different by each iteration inside the loop
SET @s = CONCAT('ALTER TABLE ',v_table_name,
' CONVERT TO CHARACTER SET ', character_set);
PREPARE stmt FROM @s;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
SET v_message = CONCAT('The table ', v_table_name ,
' was changed to the default collation of ', character_set,
'.\n', v_message);
SET v_table_name = '';
END IF;
-- Close the loop and the cursor
END LOOP get_table;
CLOSE alter_cursor;
-- Returns information about the altered tables or 'No records'
SELECT v_message;
END $$
DELIMITER ;
Nach dem Verfahren erzeugt wird, nennt es einfach:
CALL changeCollation('utf8’);
Für weitere Informationen lesen Sie blog.
Wenn Sie phpMyAdmin ausführen >> wählen Sie Datenbank >> wählen Sie Tabelle >> gehen Sie auf "Operationen" Registerkarte >> in "Tabellenoptionen" Abschnitt >> Sie können Sortieren aus der Dropdown-Liste >> und drücken Sie einmal { gehen} am oberen Rand des Bildschirms eine Meldung angezeigt wird:
Ihre SQL-Abfrage erfolgreich ausgeführt wurde
und ein Skript
ALTER TABLE `tableName` CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci
Aber es wird die Sortierungen der vorhandenen Spalten NICHT ändern. Dazu können Sie dieses Skript verwenden (dies kam auch von phpMyAdmin)
ALTER TABLE `tableName` CHANGE `Name` `Name` VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL
Schnell Art und Weise - Export in SQL-Datei, verwenden Sie zum Suchen und Ersetzen Sie den Text ändern, ändern müssen. Erstellen Sie eine neue Datenbank, importieren Sie die Daten und benennen Sie dann die alte und die neue Datenbank in den alten Namen um.
Die folgende Abfrage generiert ALTER-Abfragen, die die Sortierung für alle geeigneten Spalten in allen Tabellen auf einen bestimmten Typ ändern (utf8_general_ci in meinem Beispiel unten).
SELECT concat
(
'ALTER TABLE ',
t1.TABLE_SCHEMA,
'.',
t1.table_name,
' MODIFY ',
t1.column_name,
' ',
t1.data_type,
'(' ,
CHARACTER_MAXIMUM_LENGTH,
')',
' CHARACTER SET utf8 COLLATE utf8_general_ci;'
)
from
information_schema.columns t1
where
t1.TABLE_SCHEMA like 'you_db_name_goes_here' AND
t1.COLLATION_NAME IS NOT NULL AND
t1.COLLATION_NAME NOT IN ('utf8_general_ci');
Sie können einfach fügen Sie diesen Code zu Skriptdatei
//Database Connection
$host = 'localhost';
$db_name = 'your_database_name';
$db_user = 'your_database_user_name';
$db_pass = 'your_database_user_password';
$con = mysql_connect($host,$db_user,$db_pass);
if(!$con) { echo "Cannot connect to the database ";die();}
mysql_select_db($db_name);
$result=mysql_query('show tables');
while($tables = mysql_fetch_array($result)) {
foreach ($tables as $key => $value) {
mysql_query("ALTER TABLE $value CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci");
}
}
echo "The collation of your database has been successfully changed!";
ich einen Beitrag hier, wie die OP fragte:
Wie Sortierungs der Datenbank, Tabelle, Spalte ändern ?
Die ausgewählte Antwort gibt es nur auf Tabellenebene an.
es Datenbank breit ändern:
ALTER DATABASE <database_name> CHARACTER SET utf8 COLLATE utf8_unicode_ci;
Ändern es pro Tisch:
ALTER TABLE <table_name> CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
Gute Praxis ist es auf Tabellenebene zu ändern, wie sie es für Spalten ändern werden auch . Die Änderung für eine bestimmte Spalte gilt für jeden spezifischen Fall.
Ändern Sortierung für eine bestimmte Spalte:
ALTER TABLE <table_name> MODIFY <column_name> VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci;
Dieser beantwortet die Frage direkt. Ich brauchte das, da meine Änderungen auf Tabellenebene die Spalten NICHT aktualisierten. Ich werde das später untersuchen; aber das ist die Information, die mich durch die schweren Zeiten gebracht hat. Vielen Dank. – Parapluie
Die beste Antwort dafür. – jubi4dition
Ich war überrascht, zu erfahren, und so musste ich wieder hierher kommen und berichten, dass der ausgezeichneten und gut Verbindungen/it Safe Search beibehalten UND AUF DATABASE REPLACE Skript hat einige Optionen zum Konvertieren von Tabellen in utf8/unicode und sogar zum Umwandeln in innodb. Es ist ein Skript, das häufig verwendet wird, um eine datenbankgestützte Website (Wordpress, Drupal, Joomla usw.) von einer Domäne in eine andere zu migrieren.
, wenn Sie den Standard-Zeichensatz auf einem Schema aktualisieren:
ALTER SCHEMA MYSCHEMA DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_unicode_ci;
Ich benutzen den folgenden Shell-Skript. Er übernimmt den Datenbanknamen als Parameter und konvertiert alle Tabellen in einen anderen Zeichensatz und eine andere Kollatierung (angegeben durch andere Parameter oder einen im Skript definierten Standardwert).
#!/bin/bash
# mycollate.sh <database> [<charset> <collation>]
# changes MySQL/MariaDB charset and collation for one database - all tables and
# all columns in all tables
DB="$1"
CHARSET="$2"
COLL="$3"
[ -n "$DB" ] || exit 1
[ -n "$CHARSET" ] || CHARSET="utf8mb4"
[ -n "$COLL" ] || COLL="utf8mb4_general_ci"
echo $DB
echo "ALTER DATABASE $DB CHARACTER SET $CHARSET COLLATE $COLL;" | mysql
echo "USE $DB; SHOW TABLES;" | mysql -s | (
while read TABLE; do
echo $DB.$TABLE
echo "ALTER TABLE $TABLE CONVERT TO CHARACTER SET $CHARSET COLLATE $COLL;" | mysql $DB
done
)
Führen Sie einfach diese SQL. Ändern Sie Ihre COLLATION in was Sie benötigen und databaseName.
SELECT CONCAT("ALTER TABLE ", TABLE_SCHEMA, '.', TABLE_NAME," COLLATE utf8_general_ci;") AS ExecuteTheString
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA="databaseName"
AND TABLE_TYPE="BASE TABLE";
- 1. Wie ändert man die Standard-Sortierung einer Tabelle?
- 2. Wie ändert man die Tabelle Wert Parameter
- 3. Wie ändert man die SRID der Geometriespalte?
- 4. Schienen 5: Wie man eine Spalte von einer Datenbank entfernt?
- 5. SQL, Wie ändert man die Spalte in der SQL-Tabelle, ohne andere Abhängigkeiten zu brechen?
- 6. Cassandra, wie man Tabelle mit einer geordneten Spalte modelliert, die sich ändert?
- 7. Wie wird die ENUM-Spalte in der MySQL-Datenbank sortiert?
- 8. Java, wie ändert man die aktuelle Datenbank in eine andere?
- 9. Wie ändert man die MySQL-Root-Passwort-basierte Datenbank
- 10. Wie ändert man die Schriftgröße der Tabelle mit matplotlib.pyplot?
- 11. Wie ändert man die Reihenfolge von OrderedDict?
- 12. Wie ändert man die Tönungsfarbe von UIAlertController?
- 13. Wie ändert man die ACLs von C++?
- 14. Wie ändert man dynamisch die Elementausrichtung?
- 15. Löffel ETL, wie man die Werte ändert
- 16. Überspringen der Sortierung der Tabelle in phpmyadmin
- 17. Sortierung zwei Spalte in einer Spalte
- 18. Wie ändert man den Spaltentyp im Farbton einer Bienenstock-Tabelle?
- 19. Wie ändert man die Textverschlüsselung des DataContractSerializers?
- 20. Wie ändert man die Länge von Varchar im zusammengesetzten Primärschlüssel?
- 21. Wie ändert man die Pfeilspitze?
- 22. Wie ändert man die erste Spalte im Bootstrap die Entfernung von links?
- 23. Wie man die Sortierung umkehrt sortiere
- 24. Datenbank Sortierung vs Programmatic Java Sortierung
- 25. Tk Treeview Spalte Sortierung
- 26. JavaScript Spalte Sortierung
- 27. eine Tabelle in R durch eine Spalte Sortierung
- 28. Tabelle Sortierung funktioniert nicht wie erwartet
- 29. Wie ändert man die visuelle Struktur von django-tables2 Tabellen?
- 30. Wie ändert man eine Pandas Dataframe Spalte mit foreach?
Sehen Sie diese für die Antwort ein: http://stackoverflow.com/questions/5906585/how-to-change-the-default-collation-of-a-database/9531221#9531221 –