Существующее приложение, использующее Yii, прекрасно работает с базой данных, в которой все таблицы начинаются с заглавной буквы (да, я знаю, не очень хороший сценарий, но это так), например, Users
, Таким образом, имя таблицы, указанное в активной модели, также Users
,
Однако мне пришлось развернуть приложение на другом сервере, и там сценарий базы данных автоматически создал таблицы в базе данных в нижнем регистре. Теперь имя таблицы в коде в модели Yii Users
в то время как фактическое имя в базе данных users
который в конечном итоге взрывается во время выполнения, поскольку Yii не может найти таблицы в базе данных.
Я мог бы пройтись по всем моделям и вручную изменить прописные буквы на строчные, однако, должен ли быть разумный способ сделать это, я считаю?
сначала обновите строку ниже в вашем файле my.cnf или my.ini на новом сервере, который должен быть 1 на вашем новом сервере, поэтому либо просто закомментируйте эту запись, либо установите 0-
lower_case_table_names = 0
Затем снова восстановите резервную копию на этом сервере.
Примечание. Существующие базы данных не будут работать, поэтому необходимо восстановить всю базу данных из резервной копии старого сервера.
Вы можете сделать это путем обновления файла CAIIRecord фреймворка yii в
path : yii/framework/ar/CActiveRecord.php
измените функцию tableName на
public function tableName()
{
return strtolower(get_class($this));
}
но это изменение повлияет на все другие проекты yii.