CaseSenstive имена таблиц - PullRequest
       6

CaseSenstive имена таблиц

0 голосов
/ 24 октября 2011

привет, я сделал приложение track star, и все работает отлично, за исключением одной проблемы, с которой я сталкиваюсь. CDbCommand failed to execute the SQL statement: SQLSTATE[42S02]: Base table or view not found: 1146 Table 'devnmark_root.AuthAssignment' doesn't exist. The SQL statement executed was: SELECT * FROM 'AuthAssignment' WHERE userid=:userid

теперь это автоматически генерировалось Yii, когда я проверял if(Yii::app()->user->checkAccess('createUser',array('project'=>$model))) 18 { 19 $this->menu[] = array('label'=>'Add User To Project','url'=>array('adduser', 'id'=>$model->id)); 20 }

затем я пошел к phpmyadmin и выполнил этот запрос вручную

SELECT * FROM AuthAssignment WHERE userid=4 и есть ошибка, которая говорит о том, что таблица не существует.

если я использую маленькую букву дляимя таблицы, то нет ошибки.

Я выполнил тот же запрос на phpmyadmin локального wamp's тот же запрос не показывает ошибки там, так что это ясно, что с моей идеей sql .any есть ошибка, что я могу сделать, чтобы решить

Ответы [ 5 ]

1 голос
/ 24 октября 2011

Вы можете попытаться установить системную переменную * lower_case_table_names * в 1.

1 голос
/ 10 августа 2012

Мое локальное приложение было разработано под Windows, однако производство под Linux и я вызвал ту же проблему.Для меня это произошло из-за чувствительности к регистру - таблица AuthAssignment в базе данных была фактически authassignment .

Я нашел два варианта решения: переименовать таблицу базы данных из authassignment вAuthAssignment или редактировать раздел конфигурации файла конфигурации:

'components'=>array(
...
    'user'=>array(...
    ),
    'authManager'=>array(
     ...
     'assignmentTable'=>'authassignment' //THIS LINE SOLVED MY PROBLEM
),
1 голос
/ 24 октября 2011

Я предлагаю вам обратиться к документации по SQL_MODE для настройки ваших окончательных параметров.http://dev.mysql.com/doc/refman/5.0/en/server-sql-mode.html

Для тестирования вы можете просто выполнить:

SET sql_mode = '';

или настроить командную строку:

--sql-mode=""
0 голосов
/ 06 октября 2014

Мне больше всего помог этот ответ: оригинальный источник .

В authManager в config / main.php вы можете добавить имена таблиц в нижнем регистре, например:

'components'=>array(
    'authManager'=>array(
        'defaultRoles'=>array('guest'),
        'class'=>'RDbAuthManager',
        'assignmentTable'=>'authassignment',
        'itemTable'=>'authitem',
        'rightsTable'=>'rights',
        'itemChildTable'=>'authitemchild',
),
0 голосов
/ 06 января 2014

У меня была такая же проблема с несуществующей таблицей авторизации, я забыл запустить установку прав, которая в моем случае осуществлялась по следующему URL, т.е.

/ index.php / rights / install

а затем настройки были похожи на ветер и говорят сами за себя:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...