Ich benutze MySQL 5.5.37. Die Standard-Codierung für meine Datenbank UTF-8 ist ...Wie kann ich bei der Erstellung meiner MySQL-Ansicht dieselbe Zeichencodierung wie beim Standard der Datenbank beibehalten?
mysql> SELECT default_character_set_name FROM information_schema.SCHEMATA WHERE schema_name = "my_db";
+----------------------------+
| default_character_set_name |
+----------------------------+
| utf8 |
+----------------------------+
1 row in set (0.00 sec)
Allerdings, wenn ich eine Ansicht mit
CREATE OR REPLACE VIEW report_toc_item AS
SELECT ti.*, pti.type_id PARENT_TYPE_ID
FROM toc_item ti
JOIN toc_item pti ON pti.id = ti.parent_id
WHERE ti.type_id = 'sub_segment';
erstellen und dann zeige ich diese Ansicht, der cndoing zeigt als „latin1“ statt utf8 ...
mysql> show create view report_toc_item;
+--------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------+----------------------+
| View | Create View | character_set_client | collation_connection |
+--------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------+----------------------+
| report_toc_item | CREATE ALGORITHM=UNDEFINED DEFINER=`mytestuser`@`localhost` SQL SECURITY DEFINER VIEW `report_toc_item` AS select `ti`.`ID` AS `ID`,`ti`.`PARENT_ID` AS `PARENT_ID`,`ti`.`TOC_ID` AS `TOC_ID`,`ti`.`TITLE` AS `TITLE`,`ti`.`DESCRIPTION` AS `DESCRIPTION`,`ti`.`TYPE_ID` AS `TYPE_ID`,`ti`.`ORDER_NUM` AS `ORDER_NUM`,`ti`.`MY_OBJECT_SEGMENT_ID` AS `MY_OBJECT_SEGMENT_ID`,`ti`.`MY_OBJECT_SEGMENT_ORDER_NUM` AS `MY_OBJECT_SEGMENT_ORDER_NUM`,`ti`.`ELEMENT_ID` AS `ELEMENT_ID`,`ti`.`UNIT_TOC_ITEM_ID` AS `UNIT_TOC_ITEM_ID`,`ti`.`SHORT_NAME` AS `SHORT_NAME`,`ti`.`THIRD_PARTY_PROMPT_ID` AS `THIRD_PARTY_PROMPT_ID`,`pti`.`TYPE_ID` AS `PARENT_TYPE_ID` from (`toc_item` `ti` join `toc_item` `pti` on((`pti`.`ID` = `ti`.`PARENT_ID`))) where ((`ti`.`TYPE_ID` = 'sub_segment') and ((`pti`.`TYPE_ID` = 'lesson') or (`pti`.`TYPE_ID` = 'activity') or (`pti`.`TYPE_ID` = 'activity_practice') or (`pti`.`TYPE_ID` = 'unit_opener'))) | latin1 | latin1_swedish_ci |
+--------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------+----------------------+
1 row in set (0.00 sec)
Wie kann ich meine Ansicht die Standardcodierung der Datenbank respektieren? Ich würde es vorziehen, die Codierung nicht in die Erstellung der Ansicht zu codieren.
Gibt es eine Möglichkeit, die "SET NAMES utf8mb4;" Teil der Erstellung der Datenbank im Gegensatz zur Ausführung nach der Erstellung der Datenbank? – Dave
Ihr Kommentar stimmt nicht mit Ihrer Frage überein. 'CREATE DATABASE ... CHARACTER SET ...' gilt für die Erstellung der _database_. 'SET NAMES ... CREATE VIEW ...' gilt für die Erstellung _view_. Ich stimme zu, dass dies "falsch" erscheint. –