PDA

View Full Version : Error 1267


Danny-E
02-21-2012, 03:47 PM
Database error in vBulletin 4.1.10:

Invalid SQL:

SELECT prefix.*, prefixpermission.usergroupid AS restriction
FROM forumprefixset AS forumprefixset
INNER JOIN prefixset AS prefixset ON (prefixset.prefixsetid = forumprefixset.prefixsetid)
INNER JOIN prefix AS prefix ON (prefix.prefixsetid = prefixset.prefixsetid)
LEFT JOIN prefixpermission AS prefixpermission ON (prefix.prefixid = prefixpermission.prefixid)
WHERE forumprefixset.forumid = 53
ORDER BY prefixset.displayorder, prefix.displayorder;

MySQL Error : Illegal mix of collations (latin1_general_ci,IMPLICIT) and (latin1_swedish_ci,IMPLICIT) for operation '='
Error Number : 1267
Request Date : Tuesday, February 21st 2012 @ 04:32:02 PM
Error Date : Tuesday, February 21st 2012 @ 04:32:02 PM
Script : http://xxxxxxx/newthread.php?do=newthread&f=53
Referrer : http://xxxxxxx/forumdisplay.php?53-Staff-Lounge
IP Address : xxxxx
Username : DannyE
Classname : vB_Database
MySQL Version : 5.0.95


I've upgraded from vBulletin 3 to 4.1.10 and get the following error when trying to create new threads, also when trying to moderate posts/threads. And probably other places too but havent had the chance to check everything yet.


How to I fix this?

Thank you

Lynne
02-21-2012, 06:31 PM
When vBulletin creates a new table in the upgrade process, it asks MySQL what the default collation for the database is and then uses that. Most MySQL installations default to latin1_swedish_ci. If you have changed collations for any reason on tables in the past then you should change the database to use that as the default to prevent this issue from happening in the future.

You will find more information in the MySQL manual here:
http://dev.mysql.com/doc/refman/5.1/en/charset.html

You will need to use phpMyAdmin and make sure that all tables and fields within them have the same collation. Make sure your database collations are appropriate and consistent throughout the entire database. You need to use program like phpmyadmin to view your collations:

http://www.phpmyadmin.net/home_page/index.php

When you click your database name in phpmyadmin it will list all tables, their collations, as well as the collation of the database itself at the bottom. And when you click the name of a table on the left it will list the collations of individual fields within that table.

1) To edit the collation of the database itself you need to click the database name on the left and then click "Operations" on the top.

2) To edit the collation of an individual table you need to click its name on the left and then click "Operations" on the top.

3) To edit the collation of an individual field within a table you need to click the table name on the left and then click the edit image (a little pencil icon) for that field.

For more information please see: http://www.vbulletin.com/forum/showthread.php?t=275958&highlight=collation

Note: It is very very very important to make full database backups before proceeding if you are ever manually making any changes to your database, let it be issuing queries, or editing it via phpMyAdmin or any other interface. If done incorrectly, manually modifying the database can potentially cause irreversible damage to your database, and there is no way to perform a "partial restore" to restore just the part you may break.

Danny-E
02-23-2012, 08:35 AM
Changed all the collations to latin1_swedish_ci and everything works fine now.

Thank you :D.