Bug #18227 Problem with illegal mix of collations in VIEW (but not on TABLE)
| Submitted: | 14 Mar 2006 15:28 | Modified: | 15 Mar 2006 0:10 |
|---|---|---|---|
| Reporter: | Mats-Ove Fant | Email Updates: | |
| Status: | Can't repeat | Impact on me: | |
| Category: | MySQL Server | Severity: | S3 (Non-critical) |
| Version: | 5.0.18 | OS: | Linux (Fedora Core 4) |
| Assigned to: | CPU Architecture: | Any |
[14 Mar 2006 15:28]
Mats-Ove Fant
[14 Mar 2006 15:55]
Mats-Ove Fant
Redefining the VIEW as this solves the problem: CREATE VIEW test_view AS SELECT sysid,name FROM test_table WHERE name COLLATE latin1_swedish_ci = substring_index(substring_index(CURRENT_USER(),'@',1),'.',-1); The question is why I'm forced to set the collation of the column to latin1_swedish_ci in the VIEW definition, while it's not required in the standalone SELECT statement.
[15 Mar 2006 0:10]
MySQL Verification Team
Thank you for the bug report. Testing with current source server I was
unable to repeat:
miguel@hegel:~/dbs/5.1> bin/mysql -uroot test
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1 to server version: 5.0.20-debug
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> SHOW VARIABLES LIKE '%version%';
+-------------------------+----------------------------------------------------------+
| Variable_name | Value |
+-------------------------+----------------------------------------------------------+
| protocol_version | 10 |
| version | 5.0.20-debug |
| version_bdb | Sleepycat Software: Berkeley DB 4.1.24: (April 30, 2003) |
| version_comment | Source distribution |
| version_compile_machine | i686 |
| version_compile_os | suse-linux |
+-------------------------+----------------------------------------------------------+
6 rows in set (0.01 sec)
mysql> SHOW VARIABLES LIKE 'char%';
+--------------------------+--------------------------------------------+
| Variable_name | Value |
+--------------------------+--------------------------------------------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | latin1 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /home/miguel/dbs/5.0/share/mysql/charsets/ |
+--------------------------+--------------------------------------------+
8 rows in set (0.01 sec)
mysql> SHOW VARIABLES LIKE 'coll%';
+----------------------+-------------------+
| Variable_name | Value |
+----------------------+-------------------+
| collation_connection | latin1_swedish_ci |
| collation_database | latin1_swedish_ci |
| collation_server | latin1_swedish_ci |
+----------------------+-------------------+
3 rows in set (0.00 sec)
mysql> SET collation_connection='latin1_general_ci';
Query OK, 0 rows affected (0.04 sec)
mysql> SHOW VARIABLES LIKE 'coll%';
+----------------------+-------------------+
| Variable_name | Value |
+----------------------+-------------------+
| collation_connection | latin1_general_ci |
| collation_database | latin1_swedish_ci |
| collation_server | latin1_swedish_ci |
+----------------------+-------------------+
3 rows in set (0.01 sec)
mysql> CREATE DATABASE test_db;
Query OK, 1 row affected (0.00 sec)
mysql> USE test_db;
Database changed
mysql> CREATE TABLE test_table (sysid INT UNSIGNED NOT NULL AUTO_INCREMENT, name
-> CHAR(16) NOT NULL, PRIMARY KEY(sysid)) ENGINE=InnoDB;
Query OK, 0 rows affected (0.05 sec)
mysql> INSERT INTO test_table SET name='testuser';
Query OK, 1 row affected (0.03 sec)
mysql> SELECT * FROM test_table;
+-------+----------+
| sysid | name |
+-------+----------+
| 1 | testuser |
+-------+----------+
1 row in set (0.00 sec)
mysql> SELECT * FROM test_table WHERE name =
-> substring_index(substring_index(CURRENT_USER(),'@',1),'.',-1);
Empty set (0.05 sec)
mysql> CREATE VIEW test_view AS SELECT sysid,name FROM test_table WHERE name =
-> substring_index(substring_index(CURRENT_USER(),'@',1),'.',-1);
Query OK, 0 rows affected (0.04 sec)
mysql> SELECT * FROM test_view;
Empty set (0.03 sec)
[31 Mar 2008 12:51]
Jano Petras
I had exact same issue, and resolved it with: 1. Setting default server collation to latin1_general_ci (using My SQL Administrator utility) and restarting the mysql service 2. Altering the table to set the default table collation to latin1_general_ci After I restarted MySql browser utility, the stored proc stopped complaining about this issue, as all collations are set to the same value now. collations: 'collation_connection', 'utf8_general_ci' 'collation_database', 'latin1_general_ci' 'collation_server', 'latin1_general_ci' 'protocol_version', '10' 'slave_compressed_protocol', 'OFF' versions: 'character_set_server', 'latin1' 'collation_server', 'latin1_general_ci' 'innodb_force_recovery', '0' 'myisam_recover_options', 'OFF' 'protocol_version', '10' 'rpl_recovery_rank', '0' 'server_id', '0' 'version', '5.0.51a-community-nt' 'version_comment', 'MySQL Community Edition (GPL)' 'version_compile_machine', 'ia32' 'version_compile_os', 'Win32' Cheers jano
Portions of this website are copyright © 2001, 2002 The PHP Group
Page generated in 0.041 sec. using MySQL 8.4.7-u6-cloud
Timestamp references displayed by the system are UTC.
Content reproduced on this site is the property of the
respective copyright holders.
It is not reviewed in advance
by Oracle and does not necessarily represent the opinion of
Oracle or any other party.