I made a table called «Customer» and I want to make a simple Yii application of create and view. Here’s the piece of my code in CustomerController.php:
class CustomerController extends Controller
{
public $layout = '//layouts/column2';
public function actionCreate()
{
$model = new Customer();
$this->redirect(array('view', 'id' => $model->id));
$this->render('create', array(
'model' => $model,
));
}
public function actionView()
{
$model = new Customer();
$result = $model->viewCustomer();
foreach ($result as $row) {
echo $row["title"];
echo $row["fname"];
echo $row["lname"];
echo $row["addressline"];
echo $row["town"];
echo $row["zipcode"];
echo $row["phone"];
}
$this->render('view', array(
'model' => $this->$model(),
));
}
}
and here’s the code in my model named Customer.php
public function createCustomer()
{
$connection = Yii::app()->db;
$sql = "INSERT INTO Customer (title,fname,lname,addressline,town,zipcode,phone)VALUES(:title,:fname,:lname,:addressline,:town,:zipcode,:phone)";
$command = $connection->createCommand($sql);
$command->bindParam(":title", $title, PDO::PARAM_STR);
$command->bindParam(":fname", $fname, PDO::PARAM_STR);
$command->bindParam(":lname", $lname, PDO::PARAM_STR);
$command->bindParam(":addressline", $addressline, PDO::PARAM_STR);
$command->bindParam(":town", $town, PDO::PARAM_STR);
$command->bindParam(":zipcode", $zipcode, PDO::PARAM_STR);
$command->bindParam(":phone", $phone, PDO::PARAM_STR);
$result = $command->execute();
if ($result == 1) {
return "ok";
}
public function viewCustomer()
{
$connection = Yii::app()->db;
$sql = "Select * from Customer";
$dataReader = $connection->createCommand($sql)->query();
$dataReader->bindColumn(1, $title);
$dataReader->bindColumn(2, $fname);
$dataReader->bindColumn(3, $lname);
$dataReader->bindColumn(4, $addressline);
$dataReader->bindColumn(5, $town);
$dataReader->bindColumn(6, $zipcode);
$dataReader->bindColumn(7, $phone);
$result = $dataReader->queryAll();
return $result;
}
}
But, I always having this kind of error:
CDbException
CDbCommand failed to execute the SQL statement: CDbCommand failed to prepare the SQL statement: SQLSTATE[HY000]: General error: 1 no such table: Customer. The SQL statement executed was: Select * from Customer.
My friend said that I don’t have a get value. How can I resolve this? Please help me guys. Thank you in advance. BTW, I’m using PDO.
Делаю поиск по бд выдает ошибку, а таблица сама есть
CDbException
The table "users" for active record class "Users" cannot be found in the database.
/var/www/site/yii/framework/db/ar/CActiveRecord.php(2310)
Ругается именно на
public function __construct($model)
{
$this->_model=$model;
$tableName=$model->tableName();
if(($table=$model->getDbConnection()->getSchema()->getTable($tableName))===null)
throw new CDbException(Yii::t('yii','The table "{table}" for active record class "{class}" cannot be found in the database.',
array('{class}'=>get_class($model),'{table}'=>$tableName)));
if($table->primaryKey===null)
{
$table->primaryKey=$model->primaryKey();
if(is_string($table->primaryKey) && isset($table->columns[$table->primaryKey]))
$table->columns[$table->primaryKey]->isPrimaryKey=true;
elseif(is_array($table->primaryKey))
{
foreach($table->primaryKey as $name)
{
if(isset($table->columns[$name]))
$table->columns[$name]->isPrimaryKey=true;
}
}
}
$this->tableSchema=$table;
$this->columns=$table->columns;
foreach($table->columns as $name=>$column)
{
if(!$column->isPrimaryKey && $column->defaultValue!==null)
$this->attributeDefaults[$name]=$column->defaultValue;
}
foreach($model->relations() as $name=>$config)
{
$this->addRelation($name,$config);
}
}
main.php
'db'=>array(
'connectionString' => 'mysql:host=localhost;dbname=db',
'emulatePrepare' => true,
'username' => 'root',
'password' => '',
'charset' => 'utf8',
'tablePrefix' => 'tbl_',
),
помогите решить проблему
insolor
45.9k16 золотых знаков54 серебряных знака95 бронзовых знаков
задан 29 мар 2021 в 5:05
Первое, что бросается в глаза, у вас в конфигурационном файле указан префикс для всех таблиц в БД:
'db' => array(
'tablePrefix' => 'tbl_',
),
убедитесь, что он присутствует в названии соответствующей таблицы или удалите это свойство, если не используете префиксы.
ответ дан 29 мар 2021 в 5:53
Haku KimuraHaku Kimura
1,7522 золотых знака6 серебряных знаков12 бронзовых знаков
5
This just happened, but just one time. Any idea why?
CDbException
CDbCommand failed to execute the SQL statement: SQLSTATE[HY000]: General error: 2013 Lost connection to MySQL server during query. The SQL statement executed was: SELECT
id
,groupId
,name
,handle
,context
,instructions
,translatable
,type
,settings
FROMcraft_fields
WHERE context = :context ORDER BYname
. Bound with :context=’global’ (/Users/johndoe/Desktop/Projects/websitetest/craft/app/framework/db/CDbCommand.php:543)0 /Users/johndoe/Desktop/Projects/websitetest/craft/app/framework/db/CDbCommand.php(396): CDbCommand->queryInternal(‘fetchAll’, Array, Array)
… (large, not relevant stack trace)
30 {main}
asked Jul 16, 2014 at 6:47
Looks like it is failing in local development on a Mac. My experience with native MySQL on OS X 10.9.3 is that the MySQL server just stops working once every few weeks, and I have to restart it. Since it’s only occasional and I don’t use it for anything really critical, I just live with the restarts.
answered Jul 16, 2014 at 7:11
CDbException is the exception that Yii will throw when something has gone wrong with a database operation.
Here’s the only important part of the error message:
SQLSTATE[HY000]: General error: 2013 Lost connection to MySQL server during query.
Unfortunately that error can occur for any one of 3,210 different reasons including network connection errors, misconfigured PDO, MySQL and/or PHP, etc. It’s going to be difficult to track down especially if it’s only occurring sporadically.
answered Jul 16, 2014 at 18:00
Brad Bell♦Brad Bell
67k4 gold badges71 silver badges143 bronze badges
Обновлено
Ускорьте свой компьютер сегодня с помощью этой простой загрузки. г.
Если у вас возникла ошибка с кодами ошибок cdbException на этом компьютере, вам следует проверить эти методы восстановления.
<этот стиль равен «width: 288px;» scope = «col»> ИМЯ
ОПИСАНИЕ
CDBException :: m_nRetCode | Содержит открытую базу данных Conn. .. |
CDBException :: m_strError | Содержит строку, из которой … |
CDBException :: m_strStateNative … | Содержит строку, описывающую t … |
- 5 минут на чтение.
Синтаксис
Класс
: общедоступное исключение CE
Участники
Общедоступные элементы
Тип содержит два общедоступных элемента данных, которые любой сможет использовать для определения причины упущения или для вывода сообщения печати, описывающего одно исключение. CDBException
– это материал, созданный поверх того, что создается функциями-членами, которые ссылаются на группы базы данных.
Исключения – это периодические выполнения, которые содержат условия USB, убивающие программу, например ошибки источника маркетинговой информации или сетевого ввода-вывода. Ошибки, которые можно ожидать увидеть при выполнении известной программы, обычно не являются исключением.
Вы получаете эти объекты в массиве выражения CATCH. Вы также можете сгенерировать объекты CDBException
из своего собственного значения с помощью глобальной функции AfxThrowDBException
.
Дополнительно Для получения информации об обработке исключений в целом или об объектах CDBException
см. Обработка исключений (MFC) вместе с Исключениями: Исключения базы данных .
Иерархия наследования
Требования
CdbException :: M_nretcode
Содержит код ошибки RETCODE ODBC, возвращаемый функцией API ODBC (интерфейс прикладного программирования).
Этот тип по существу включает коды с префиксом SQL через определенные коды ODBC и коды с префиксом AFX_SQL через определенные классы базы данных. Для CDBException
он по отдельности содержит одно из общепринятых значений:
-
Драйвер AFX_SQL_ERROR_API_CONFORMANCE как
CDatabase :: OpenEx
помимо запроса профессионаловCDatabase :: Open
не обнаруживает ожидаемой цели совместимости ODBC API 1 (SQL_OAC_LEVEL1). -
Обновлено
Вы устали от того, что ваш компьютер работает медленно? Раздражают разочаровывающие сообщения об ошибках? ASR Pro — это решение для вас! Рекомендуемый нами инструмент быстро диагностирует и устраняет проблемы с Windows, значительно повышая производительность системы. Так что не ждите больше, скачайте ASR Pro сегодня!
AFX_SQL_ERROR_CONNECT_FAIL Ошибка при подключении к жесткому диску. Вы передали NULL
CDatabase
для ссылки на конструктор Recordset вашей компании, но не смогли предпринять попытку пересылки на основе соединенияGetDefaultConnect
.>
-
AFX_SQL_ERROR_DATA_TRUNCATED Вы запросили много данных, чем получили предоставленное пространство. Информацию о растущем количестве ошибок в хранилище данных для ваших типов документов
CString
илиCByteArray
можно найти в инструкцииnMaxLength
для RFX_Text и RFX_Binary в разделе “Макросы” и просто глобальные переменные. -
AFX_SQL_ERROR_DYNASET_NOT_SUPPORTED Не удалось вызвать
CRecordset :: Open
для запроса хорошей динамической программы. Динсеты поддерживаются не только авиатором. -
AFX_SQL_ERROR_EMPTY_COLUMN_LIST Вы пытались создать конкретную входную таблицу (или то, что вы указали, определенно может быть идентифицировано как вызов процедуры и / или, возможно, оператор SELECT), но содержимое не было идентифицировано при обмене полями записи (RFX ), Вызывает ваш заголовок
DoFieldExchange
. -
AFX_SQL_ERROR_FIELD_SCHEMA_MISMATCH Широкий спектр функций RFX рядом с
DoFieldExchange
Полная замена не соответствует типу данных строки вокруг набора записей. -
AFX_SQL_ERROR_ILLEGAL_MODE Вы прошли
CRecordset :: Update
без предварительного взаимодействия сCRecordset :: AddNew
с помощьюCRecordset :: Edit
, чтобы имеют. -
AFX_SQL_ERROR_LOCK_MODE_NOT_SUPPORTED Ваш запрос блокировки записи не может быть современным, потому что ваш драйвер ODBC не поддерживает блокировку. Вы
-
afx_sql_error_multiple_rows_affected с помощью обнаружения
CRecordset :: Update
илиDelete
для таблицы без уникального ключа, а также изменения некоторых других записи. -
AFX_SQL_ERROR_NO_CURRENT_RECORD Вы пытались изменить или удалить ранее удаленную запись. Вы должны перейти к новой активной записи после нескольких удалений.
-
AFX_SQL_ERROR_NO_POSITIONED_UPDATES Ваш запрос динамического набора не может быть удовлетворен, поскольку драйвер ODBC не поддерживает позиционированные обновления.
-
AFX_SQL_ERROR_NO_ROWS_AFFECTED Вы отметили
CRecordset :: Update
илиdelete
, когда метод был запущен, запись данных не может быть найдена. -
AFX_SQL_ERROR_ODBC_LOAD_FAILED Попытка загрузить ODBC. DLL Windows не может найти эту DLL или даже загрузить ее. Эту ошибку можно считать фатальной.
-
AFX_SQL_ERROR_ODBC_V2_REQUIRED Ваш запрос, предоставленный Dynaset, может завершиться ошибкой, поскольку требуется сертифицированный драйвер ODBC уровня 2.
-
AFX_SQL_ERROR_RECORDSET_FORWARD_ONLY Попытка поиска не удалась, поскольку форма данных завершена и не поддерживает прокрутку назад.
-
AFX_SQL_ERROR_SNAPSHOT_NOT_SUPPORTED Электронная почта для
CRecordset :: Open
с запросом моментального снимка failedsa. Драйвер не поддерживает фото. (Это следует делать только в том случае, если библиотека курсоров ODBC ODBCCURS.DLL недоступна.) -
AFX_SQL_ERROR_SQL_CONFORMANCE Велосипедист, вызывающий
CDatabase :: OpenEx
илиCDatabase :: Open
, не соответствует требуемому «минимальному» уровню соответствия ODBC SQL. “(SQL_OSC_MINIMUM). -
AFX_SQL_ERROR_SQL_NO_TOTAL ODBC racer не смог указать числовой размер, относящийся к значению данных
CLongBinary
. Вероятно, процесс завершился неудачно, потому что блок глобальной памяти вполне может быть не выделен заранее. -
AFX_SQL_ERROR_RECORDSET_READONLY Покупатель пытается обновить набор записей, доступный только для чтения, или, возможно, первичный источник данных доступен только для чтения. При использовании предоставленного объекта
CDatabase
небольшие операции обновления могут выполняться с каким-то набором записей. -
Ошибка функции SQL_ERROR. Личное сообщение об ошибке, возвращаемое функцией ODBC
SQLError
, сохраняется в результатахm_strError
. Функция -
Ошибка sql_invalid_handle просто из-за недопустимого дескриптора среды, недопустимой службы подключения, согласно инструкциям. Это указывает на неисправность канала. Нет других доступных файлов, кроме функции ODBC
SQLError
.
Коды, обычно определяемые ODBC, с префиксом SQL. Коды с префиксом AFX можно определить в AFXDB.H, который выбран в MFC INCLUDE.
CDBException :: M_strError
Строка описывает ошибку с помощью буквенно-цифровых слов и предложений. См. m_strStateNativeOrigin
, предназначенный для получения более подробной информации и ситуации.
CDBException :: M_strStateNativeOrigin
Строка полностью означает «Состояние:% s, Источник:% ld, Источник:% s», в форматах коды последовательно заменяются повышениями, которые, в частности, описывают:
-
SQLSTATE, абсолютная строка с завершающим нулем, содержащая огромный 5-значный код ошибки, когда она возвращается в параметре szSqlState, связанном с помощью функции ODBC
SQLError
. Результаты SQLSTATE перечислены в Приложении A, Коды ошибок ODBC , в Справочнике по программированию ODBC. Пример: «S0022». -
Пользовательский код ошибки, по которому источник данных был возвращен в параметре pfNativeError
SQLError
, дает хорошие результаты. Пример: 207. -
Сообщение об ошибке отправлено обратно параметру функции szErrorMsg
SQLError
. Это сообщение состоит из нескольких имен в скобках. Поскольку реальная ошибка передается от источника к пользователю, один компонент ODBC (источник данных, командная строка, менеджер владельцев автомобилей) добавляет свое собственное имя. Эта информация помогает человеку определить источник ошибки. Пример: [Microsoft] [Драйвер ODBC SQL Server] [SQL Framework Server]
интерпретирует строку ошибки, а также помещает наши компоненты в m_strStateNativeOrigin
; Хотя m_strStateNativeOrigin
содержит информацию о нескольких ошибках, ошибки, несомненно, разделяются переносами строки. Платформа вставляет этот буквенно-цифровой текст ошибки в m_strError
.
Дополнительные сведения о кодах исключительных ситуаций, реализованных для создания этой строки, см. в наиболее связанной функции SQLError в Справочнике по программированию ODBC.
Пример
Из ODBC: «Статус: S0022, Собственный: 207, Источник: [Microsoft] [Драйвер ODBC SQL] [SQL Server] Недопустимое имя столбца« ColName »»
См. также
Этот курс предназначен для получения учебной программы MFC Open Database Connectivity (ODBC). Если вместо этого вы используете новые классы объектов доступа к данным (DAO), используйте исключение Take CDaoException . Все имена классов DAO в настоящее время имеют префикс “CDao”. Дополнительную информацию см. В материале Обзор: Программирование баз данных .
Ускорьте свой компьютер сегодня с помощью этой простой загрузки. г.
What Are CdbException Error Codes And How To Fix Them?
Wat Zijn CdbException-foutcodes En Hoe Kunnen Ze Worden Opgelost?
Que Sont Les Codes D’erreur CdbException Et Comment Les Corriger ?
Cosa Sono I Codici Di Errore CdbException E Come Risolverli?
Was Sind CdbException-Fehlercodes Und Wie Können Sie Behoben Werden?
CdbException 오류 코드는 무엇이며 어떻게 수정합니까?
O Que São Códigos De Erro CdbException E Como Corrigi-los?
Vad är CdbException -felkoder Och Hur åtgärdas De?
¿Qué Son Los Códigos De Error CdbException Y Cómo Solucionarlos?
Co To Są Kody Błędów CdbException I Jak Je Naprawić?
г.
Замучился воевать с такой же проблемой.
FrontEnd работает все ОК. Консоль выдает такуюже ошибку.
Гуглил, гуглил так и ненагуглил. У всех либо PDO не включен, либо забывают Yii консоль настроить. У меня вроде все сделанно но не работает.
Машинка: ubuntu LAMP
Замучился пробовать, вроде все ОК и вроде все правельно но не работает.
в /etc/php5/apache2/conf.d/ и в /etc/php5/cli/conf.d/ присутствуют pdo.ini со строчкой extension=pdo.so и pdo_mysql.ini с нужным содержанием extension=pdo_mysql.so
теоритечески нечего не мешает работать, все настроенно. А по факту ошибка.
/protected/config/main.php
Код: Выделить всё
'db'=>array(
'connectionString' => 'mysql:host=localhost;dbname=wincalc',
'emulatePrepare' => true,
'username' => 'root',
'password' => '1234',
'charset' => 'utf8',
),
/protected/config/cansole.php
Код: Выделить всё
'db'=>array(
'connectionString' => 'mysql:host=localhost;dbname=wincalc',
'emulatePrepare' => true,
'username' => 'root',
'password' => '1234',
'charset' => 'utf8',
phpinfo
PDO
PDO support enabled
PDO drivers mysqlpdo_mysql
PDO Driver for MySQL enabled
Client API version 5.5.34Directive Local Value Master Value
pdo_mysql.default_socket /var/run/mysqld/mysqld.sock /var/run/mysqld/mysqld.sock
На всякий случай тект ошибки
exception ‘CDbException’ with message ‘CDbConnection failed to open the DB connection: could not find driver’ in /hdd/a/skvnet/fw/db/CDbConnection.php:381
Stack trace:
#0 /hdd/a/skvnet/fw/db/CDbConnection.php(330): CDbConnection->open()
#1 /hdd/a/skvnet/fw/db/CDbConnection.php(308): CDbConnection->setActive(true)
#2 /hdd/a/skvnet/fw/base/CModule.php(387): CDbConnection->init()
#3 /hdd/a/skvnet/fw/base/CApplication.php(438): CModule->getComponent(‘db’)
#4 /hdd/a/skvnet/fw/db/ar/CActiveRecord.php(623): CApplication->getDb()
#5 /hdd/a/skvnet/fw/db/ar/CActiveRecord.php(2309): CActiveRecord->getDbConnection()
#6 /hdd/a/skvnet/fw/db/ar/CActiveRecord.php(387): CActiveRecordMetaData->__construct(Object(TablAllKlient))
#7 /hdd/a/skvnet/fa/protected/models/TablAllKlient.php(27): CActiveRecord::model(‘TablAllKlient’)
#8 /hdd/a/skvnet/fa/protected/commands/SendsmstoallcalledCommand.php(33): TablAllKlient::model()
#9 /hdd/a/skvnet/fw/console/CConsoleCommandRunner.php(67): SendsmstoallcalledCommand->run(Array)
#10 /hdd/a/skvnet/fw/console/CConsoleApplication.php(91): CConsoleCommandRunner->run(Array)
#11 /hdd/a/skvnet/fw/base/CApplication.php(169): CConsoleApplication->processRequest()
#12 /hdd/a/skvnet/fw/yiic.php(33): CApplication->run()
#13 /hdd/a/skvnet/fa/protected/yiic.php(7): require_once(‘/hdd/a/skvoznik…’)
#14 {main}root@lanket-air:/var/a/skvnet/fa/protected#
смущает результат команды в консоле php -m
а именно отсутствие pdo_mysql. Хотя по настройкам должон быть.
[PHP Modules]
Core
ctype
date
dom
ereg
fileinfo
filter
hash
iconv
json
libxml
pcre
PDO
pdo_sqlite
Phar
posix
Reflection
session
SimpleXML
SPL
SQLite
sqlite3
standard
tokenizer
xml
xmlreader
xmlwriter[Zend Modules]